<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">OK, I think I understand part of this now. What I was doing was this:<div><br></div><div><div style="margin: 0px; font-size: 12px; "><div style="margin: 0px; "><font face="Courier"><span class="Apple-tab-span" style="white-space: pre; ">  </span>FT_Library  library;</font></div><div style="margin: 0px; "><font face="Courier"><span class="Apple-tab-span" style="white-space: pre; ">  </span>FT_Face     face;</font></div><div style="margin: 0px; min-height: 14px; "><font face="Courier">        <br class="webkit-block-placeholder"></font></div><div style="margin: 0px; min-height: 14px; "><font face="Courier"> <span class="Apple-tab-span" style="white-space: pre; ">  </span><span style="color: rgb(53, 86, 138); ">int</span> error = FT_Init_FreeType(&library);</font></div><div style="margin: 0px; "><font face="Courier"><span class="Apple-tab-span" style="white-space: pre; ">   </span>error = FT_New_Memory_Face(library,</font></div><div style="margin: 0px; "><font face="Courier"> <span class="Apple-tab-span" style="white-space: pre; ">                               </span>   (<span style="color: rgb(53, 86, 138); ">const</span> FT_Byte*)buffer.getData(),</font></div><div style="margin: 0px; "><font face="Courier"><span class="Apple-tab-span" style="white-space: pre; ">                                </span>   498124,</font></div><div style="margin: 0px; "><font face="Courier"><span class="Apple-tab-span" style="white-space: pre; ">                            </span>   0,</font></div><div style="margin: 0px; "><font face="Courier"><span class="Apple-tab-span" style="white-space: pre; ">                         </span>   &face);</font></div><div style="margin: 0px; min-height: 14px; "><font face="Courier">        <br class="webkit-block-placeholder"></font></div><div style="margin: 0px; min-height: 14px; "><span style="font-family: Courier; "><span class="Apple-tab-span" style="white-space: pre; ">     </span>cairo_font_face_t   *testFace =</span><span style="font-family: Courier; "> </span><span style="font-family: Courier; color: rgb(53, 86, 138); ">0</span><span style="font-family: Courier; ">;</span></div><div style="font-size: medium; margin: 0px; "><font face="Courier"><span class="Apple-tab-span" style="white-space: pre; ">  </span>cairo_scaled_font_t *testFont = <span style="color: rgb(53, 86, 138); ">0</span>;</font></div><div><font face="Courier"><br></font></div></div><div style="margin: 0px; font-size: 12px; "><span style="font-family: Courier; ">        </span><span style="font-family: Courier; ">testFace = cairo_ft_font_face_create_for_ft_face(face, </span><span style="font-family: Courier; color: rgb(53, 86, 138); ">0</span><span style="font-family: Courier; ">);</span></div><p style="margin: 0px; font-size: 12px; min-height: 14px; "><font face="Courier">        <br class="webkit-block-placeholder"></font></p><div style="margin: 0px; font-size: 12px; "><font face="Courier">        cairo_matrix_t font_matrix;</font></div><div style="margin: 0px; font-size: 12px; "><font face="Courier">        cairo_matrix_init_identity(&font_matrix);</font></div><div style="margin: 0px; font-size: 12px; "><font face="Courier">        cairo_matrix_scale(&font_matrix, <span style="color: #35568a">19</span>, <span style="color: #35568a">19</span>);</font></div><p style="margin: 0px; font-size: 12px; min-height: 14px; "><font face="Courier">        <br class="webkit-block-placeholder"></font></p><div style="margin: 0px; font-size: 12px; "><font face="Courier">        cairo_matrix_t ctm;</font></div><div style="margin: 0px; font-size: 12px; "><font face="Courier">        cairo_matrix_init_identity(&ctm);</font></div><p style="margin: 0px; font-size: 12px; min-height: 14px; "><font face="Courier">        <br class="webkit-block-placeholder"></font></p><div style="margin: 0px; font-size: 12px; "><font face="Courier">        cairo_font_options_t *options = cairo_font_options_create();</font></div><p style="margin: 0px; font-size: 12px; min-height: 14px; "><font face="Courier">        <br class="webkit-block-placeholder"></font></p><div style="margin: 0px; font-size: 12px; "><font face="Courier">        testFont =  cairo_scaled_font_create(testFace,</font></div><div style="margin: 0px; font-size: 12px; "><font face="Courier">                                             &font_matrix,</font></div><div style="margin: 0px; font-size: 12px; "><font face="Courier">                                             &ctm,</font></div><div style="margin: 0px; font-size: 12px; "><font face="Courier">                                             options);</font></div></div><div><br></div><div>But it seems you might be suggesting that this be used instead:</div><div><br></div><div><div style="margin: 0px; font-size: 12px; "><font face="Courier"><span class="Apple-tab-span" style="white-space:pre"> </span>FT_Library  library;</font></div><div style="margin: 0px; font-size: 12px; "><font face="Courier"><span class="Apple-tab-span" style="white-space:pre">    </span>FT_Face     face;</font></div><div style="margin: 0px; font-size: 12px; min-height: 14px; "><font face="Courier">        <br class="webkit-block-placeholder"></font></div><div style="margin: 0px; font-size: 12px; min-height: 14px; "><font face="Courier"> <span class="Apple-tab-span" style="white-space:pre">   </span><span style="color: rgb(53, 86, 138); ">int</span> error = FT_Init_FreeType(&library);</font></div><div style="margin: 0px; font-size: 12px; "><font face="Courier"><span class="Apple-tab-span" style="white-space:pre">     </span>error = FT_New_Memory_Face(library,</font></div><div style="margin: 0px; font-size: 12px; "><font face="Courier"> <span class="Apple-tab-span" style="white-space:pre">                         </span>   (<span style="color: rgb(53, 86, 138); ">const</span> FT_Byte*)buffer.getData(),</font></div><div style="margin: 0px; font-size: 12px; "><font face="Courier"><span class="Apple-tab-span" style="white-space: pre; ">                               </span>   498124,</font></div><div style="margin: 0px; font-size: 12px; "><font face="Courier"><span class="Apple-tab-span" style="white-space: pre; ">                           </span>   0,</font></div><div style="margin: 0px; font-size: 12px; "><font face="Courier"><span class="Apple-tab-span" style="white-space:pre">                           </span>   &face);</font></div><div style="margin: 0px; font-size: 12px; min-height: 14px; "><font face="Courier">        <br class="webkit-block-placeholder"></font></div><p style="margin: 0px; font-size: 12px; min-height: 14px; "><span style="font-family: Courier; "><span class="Apple-tab-span" style="white-space:pre">        </span>cairo_font_face_t   *testFace =</span><span style="font-family: Courier; "> </span><span style="font-family: Courier; color: rgb(53, 86, 138); ">0</span><span style="font-family: Courier; ">;</span></p><div style="margin: 0px; "><font face="Courier"><span class="Apple-tab-span" style="white-space:pre">  </span>cairo_scaled_font_t *testFont = <span style="color: rgb(53, 86, 138); ">0</span>;</font></div><div><font face="Courier"><br></font></div><div><font face="Courier"><span style="font-size: 12px; "><span class="Apple-tab-span" style="white-space:pre">    </span>testFace = cairo_ft_font_face_create_for_ft_face(face, </span><span style="font-size: 12px; color: rgb(53, 86, 138); ">0</span><span style="font-size: 12px; ">);</span></font></div><div><span style="font-size: 12px; "><font face="Courier"><br></font></span></div><div><font face="Courier"><span class="Apple-tab-span" style="white-space:pre">    </span>cairo_set_font_face(cr, testFace);</font></div><div><font face="Courier"><br></font></div><div><div style="margin: 0px; font-size: 12px; "><font face="Courier"><span class="Apple-tab-span" style="white-space:pre">  </span>cairo_set_font_size(cr, <font color="#35568a">19</font>);</font></div></div><div><font face="Courier"><br></font></div><div><font face="Courier"><span class="Apple-tab-span" style="white-space:pre">     </span>// Can get the font pointer, if need be..</font></div><div><font face="Courier"><span class="Apple-tab-span" style="white-space:pre">  </span>testFont = cairo_get_scaled_font(cr);</font></div><div style="margin: 0px; min-height: 14px; "><font face="Courier">        <br class="webkit-block-placeholder"></font></div><div style="margin: 0px; font-size: 12px; "><br></div></div><div>OK…but while this second alternative may be effectively equivalent, my concern is more with memory footprint and performance…The docs say "<span style="font-family: Times; background-color: rgb(255, 255, 255); ">A </span><a class="link" href="http://cairographics.org/manual/cairo-cairo-scaled-font-t.html#cairo-scaled-font-t" title="cairo_scaled_font_t" style="text-decoration: none; color: rgb(52, 101, 164); font-family: Times; background-color: rgb(255, 255, 255); "><span class="type">cairo_scaled_font_t</span></a><span style="font-family: Times; background-color: rgb(255, 255, 255); "> is a font scaled to a particular size and device resolution. A </span><a class="link" href="http://cairographics.org/manual/cairo-cairo-scaled-font-t.html#cairo-scaled-font-t" title="cairo_scaled_font_t" style="text-decoration: none; color: rgb(52, 101, 164); font-family: Times; background-color: rgb(255, 255, 255); "><span class="type">cairo_scaled_font_t</span></a><span style="font-family: Times; background-color: rgb(255, 255, 255); "> is most useful for low-level font usage where a library or application wants to cache a reference to a scaled font to speed up the computation of metrics."</span>  This suggests to me that I could create my three different fonts at their three different sizes, and perhaps see improved performance for querying font metrics. I suppose the trade-off might be that maintaining three separate fonts would use up more memory…this is basically the motivation for my question… :-) I guess the time-vs-space tradeoff is something I'd have to measure myself...</div><div><br></div><div>-- Philip</div><div><br></div><div><div><div>On Mar 21, 2013, at 1:33 PM, Behdad Esfahbod <<a href="mailto:behdad@behdad.org">behdad@behdad.org</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">On 13-03-21 04:20 PM, Philip Schneider wrote:<br><blockquote type="cite">Greetings -<br><br>The doc for cairo_scaled_font_create() suggests that the font_matrix can be<br>used to set the point size N (by making the matrix contain a scale of N). But<br>there's also cairo_set_font_size, which seems to act to replace the matrix one<br>has set in the creation call. If my application makes use of the same face,<br>but at say 3 font sizes (10, 16, 24), would it be better to create and retain<br>three separate instances (each at one of the three desired sizes), or just<br>create a single instance and use cairo_set_font_size() whenever I need to<br>switch between sizes?<br></blockquote><br>Normally you shouldn't need to use cairo_scaled_font_create().  Cairo does<br>that automatically for you.  cairo_set_font_size() is a convenience wrapper<br>for cairo_set_font_matrix().<br><br>-- <br>behdad<br><a href="http://behdad.org/">http://behdad.org/</a><br><br></blockquote></div><br></div></body></html>