<div dir="auto">My vote is with FontStyle.url too!  One has to deal with elegant design versus straightforward design.  My vote is most always with straightforward design, despite future issues.  We can always add FontLibrary later, if needed.  Is there any leftover issues not handled by FontStyle.url?   Just font collections?  Can we provide or suggest utilities to break apart font collections?</div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Tue, Mar 4, 2025 at 4:11 PM Michalis Kamburelis via x3d-public <<a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>To make my questions about FontLibrary easier to understand, I prepared the testcases, they are in <a href="https://github.com/michaliskambi/x3d-tests/tree/master/font_library_questions" target="_blank">https://github.com/michaliskambi/x3d-tests/tree/master/font_library_questions</a> . They contain 4 questions in total -- 2 about Inline, 1 about searching non-top-level , 4th about EXTERNPROTO.</div><div><br></div><div>You can git clone the whole repo of <a href="https://github.com/michaliskambi/x3d-tests/" target="_blank">https://github.com/michaliskambi/x3d-tests/</a> and go into subdirectory font_library_questions to get all these files easily.</div><div><br></div><div>Please don't take the fact that I made theses tests as my encouragement to pursue the FontLibrary design :) </div><div><br></div><div>- I'm really more and more convinced that FontLibrary is an unnecessary complication. Given that font collections are rare (and can be supported in simpler way), and opentype.js doesn't support them... I really think this is an over-complicated design -- unnecessary for users, and possibly not ever fully implementable by any browser. <br></div><div><br></div><div>- And in contrast, "FontStyle.url" seems like something totally obvious. 2 browsers already implement this, or something very close, from what I understand. (And for my browser it is also trivial, so we have 3 implementations that confirm it's OK.) And all my 4 questions (from <a href="https://github.com/michaliskambi/x3d-tests/tree/master/font_library_questions" target="_blank">https://github.com/michaliskambi/x3d-tests/tree/master/font_library_questions</a> ) just disappear in the "FontStyle.url" version. Associating the font file to FontStyle is explicit and obvious in this case.</div><div><br></div><div>Anyhow, I repeated my sentiment enough times already :), I'll let others speak. From the spec standpoint, we need at least answers to my 4 questions, to understand the edge-case behavior.</div><div><br></div><div>Regards,</div><div>Michalis</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">wt., 4 mar 2025 o 19:08 Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>> napisał(a):<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Don,</div><div><br></div><div>No worries, I will give you time then to carefully read my mail :) </div><div><br></div><div>In AD 2 I raise some questions still unanswered ("""If FontStyle.fontLibrary = NULL, then match the family name from FontStyle.family, using all loaded fonts from FontLibrary nodes. (Should it take into account also FontLibrary nodes mentioned only in some FontStyle.fontLibrary? or only top-level FontLibrary nodes? and what about my questions with Inline and EXTERNPROTO cases?)"""). More explanation about Inline and EXTERNPROTO questions in previous mail in this thread.</div><div><br></div><div>We also miss more testcases. Testcases that address my above questions, showing what happens in the cases I question about, would be desirable. We also miss example TTC, OTC, multiple-family WOFF and then testcases of X3D using them.</div><div><br></div><div>As for your argument """overloading FontStyle with X3DUrlObject functionality is a bad idea, and do not support it.  Presentation ought to be separate from network-loading functionality.""", I admittedly don't agree with it. Possibly, I don't understand where this argument is coming from :) We add X3DUrlObject to some presentation things, it's not a problem in my view. E.g. ImageTexture is X3DUrlObject, just like all other texture nodes, and AudioClip, and Inline... Adding X3DUrlObject to FontStyle would be consistent, in my view. <br></div><div><br></div><div>As for implementations:</div><div><br></div><div>- For X3DOM and X_ITE, from what I understand, implementing "FontStyle.url" is not a problem. I understand that X_ITE already had a similar functionality (just over-using FontStyle.family for URLs), and X3DOM already implements experimental FontStyle.url. Adding FontStyle.url to Castle Model Viewer/Castle Game Engine would be trivial too.</div><div><br></div><div>- This is in contrast to FontLibrary. Andreas says """x3dom (or any browser) will not be able to support font collections""". Desktop Castle Model Viewer/Castle Game Engine... I don't know can I support it either (FreeType can query font collection by a known index, I don't see how to enumerate all fonts inside, and implement the spec would require it).</div><div><br></div><div>Regards,</div><div>Michalis</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">wt., 4 mar 2025 o 16:35 Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> napisał(a):<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>




<div dir="ltr">
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Thanks for careful review Michalis.</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Dick Puk and I met Monday (before your email) and made some refinements. </div>
<ul style="list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>Scrapped 'enabled' field</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>Improved prose, closely reviewed Examples 1 and 2.</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>We have been carefully tracking the email threads to date, and think we have addressed almost all concerns.</div>
</li></ul>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Some of our prose refinements match yours, some don't.</div>
<ul style="list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>We really think that overloading FontStyle with X3DUrlObject functionality is a bad idea, and do not support it.  Presentation ought to be separate from network-loading functionality.  That
<span style="background-color:rgb(128,255,255)"><s>overstrike-cyan prose</s></span> has been removed.</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>As a result, each of your FontStyle.url examples remain supported by FontLibrary.url field.</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>Now that Example 1 (FontLibrary outside of FontStyle) and Example 2 (FontLibrary inside of FontStyle), few advantages appear relevant for adding a FontStyle.fontLibrary field.</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>This addresses many of the complications that you point out.</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div><br>
</div>
</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>X3D 4.1 (Draft) Architecture, clause 15.4 Node reference</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#NodeReference" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#NodeReference</a></div>
</li></ul>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Summary of our review:  </div>
<ul style="list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>it seems like the current two-path approach offers compatible alternatives, and avoiding FontStyle.fontLibrary field completely still works and is simpler... Thus preferred.</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>When multiple different font families exist within a single font file, browser inspection of name information inside that file seems necessary.</div>
</li></ul>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Michalis, I will study your email further when time permits.  This is a preliminary response describing yesterday evening's specification efforts.</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Just ran some more tests.  Progress report: it is super impressive that both EXAMPLE 1 and EXAMPLE 2 run satisfactorily in both X3DOM Editor and X_ITE Playground... A real testament to great implementations that variations to expectations are supported.  Standing
 Ovation!</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Further improvements are welcome, of course.  However we have come a long way... Am hoping to avoid a spiraling email cyclone.  </div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
If we are converging, great.  Incidentally it does not hurt to keep both of these approaches and work further on examples implementations.</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
If we are clarifying alternatives, yes please let's keep improving draft specification prose.</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
If we are not converging, that is OK too... we might consider having a meeting to discuss with each other, to understand goals/contraints/problems and example use cases well.  "First seek to understand" seems apropos.</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Onward we go... Again thanks for much excellent thinking and multiple great efforts.</div>
<div id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797Signature">
<p style="margin-top:0in;margin-bottom:0in;font-family:Calibri,sans-serif;font-size:11pt">
<span style="font-family:"Courier New";font-size:9pt;color:rgb(0,0,0)"><br>
</span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">all the best, Don</span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">--</span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">Don Brutzman  Naval Postgraduate School, Code USW/Br        <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a></span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149</span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">X3D graphics, virtual worlds, navy robotics <a href="https://faculty.nps.edu/brutzman" target="_blank">https://faculty.nps.edu/brutzman</a></span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt"> </span></p>
</div>
<div id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797appendonsend"></div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<hr style="display:inline-block;width:98%">
<div id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>><br>
<b>Sent:</b> Tuesday, March 4, 2025 4:43 AM<br>
<b>To:</b> Andreas Plesch <<a href="mailto:andreasplesch@gmail.com" target="_blank">andreasplesch@gmail.com</a>><br>
<b>Cc:</b> Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>>; Holger Seelig <<a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a>>; Extensible 3D (X3D) Graphics public discussion <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br>
<b>Subject:</b> Re: [x3d-public] draft X3D 4.1 prose for font files and libraries</font>
<div> </div>
</div>
<div>
<p></p>
<div style="background-color:rgb(0,70,121);width:100%;border-style:solid;border-color:rgb(0,70,121);border-width:1pt;padding:2pt;font-size:10pt;line-height:12pt;font-family:"Calibri";color:yellow;text-align:left">
<span style="color:yellow">NPS WARNING:</span> *external sender* verify before acting.</div>
<br>
<p></p>
<div>
<div dir="ltr">1. I looked how FreeType supports font collections. <a href="https://freetype.org/" target="_blank">
https://freetype.org/</a> indeed says it can handle TTC, OTC.<br>
<br>
    API: we can pass "index" to various functions (like FT_New_Face), which seens to be an index into the font collection.
<br>
    <br>
    I didn't find any way to query the available count inside a given font collection (file) -- it seems that application is just expected to know the index, i.e. it is specified by the user like "use font from this amazing-font.ttc file, index 1". It seems
 to me that "enumerate all fonts within a font collection" is not a typical operation, I actually don't know how to do it yet.<br>
<br>
2. I am afraid we go into something overly complicated with FontLibrary, both to use (for authors) and to implement.<br>
<br>
<div>    The current design of FontLibrary assumes that font collections (that include many families and/or many font styles within a single file) are a common use-case. But this is not the case, it seems we all confirmed this in this thread. In practice, font
 files are TTF / OTF / WOFF with one family and one style. And opentype.js does not support font collections. FreeType suppprts them, but I'm not sure how to enumerate them all.</div>
     <br>
    The new prose accounts for this, by allowing various options... and being needlessly complicated, IMHO. So I feel we arrived at a complicated spec, without much benefit.<br>
<br>
    If I understand the new proposal ( <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#FontLibrary" target="_blank">
https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#FontLibrary</a> ) right:<br>
<br>
    The browser should read the first accessible font file from FontLibrary.url.<br>
<br>
    This font file, referenced by FontLibrary.url, can be:<br>
<br>
    - Multiple font families inside. If the first accessible thing on FontLibrary.url is a font collection (TTC, OTC, or a collection inside WOFF). And then "FontLibrary.family" cannot be used (as it would make no sense).<br>
<br>
    - Single font family (with multiple styles or one style). And then (according to spec) "FontLibrary.family" is allowed (to override family name from font file content), but optional.<br>
<br>
    The connection between FontLibrary and FontStyle can be done in 2 ways, as I understand:<br>
<br>
    - If FontStyle.fontLibrary = NULL, then match the family name from FontStyle.family, using all loaded fonts from FontLibrary nodes. (Should it take into account also FontLibrary nodes mentioned only in some FontStyle.fontLibrary? or only top-level FontLibrary
 nodes? and what about my questions with Inline and EXTERNPROTO cases?)<br>
<br>
    - If FontStyle.fontLibrary <> NULL, then match the family name from FontStyle.family, using only the indicated FontLibrary node.<br>
<br>
    This is also quite different to what CSS is doing. At least to what I shown in
<a href="https://stackoverflow.com/questions/12812441/how-do-i-use-woff-fonts-for-my-website" target="_blank">
https://stackoverflow.com/questions/12812441/how-do-i-use-woff-fonts-for-my-website</a> .<br>
    <br>
3. I really propose we go back to "FontStyle.url", and scratch the "FontLibrary" node design.<br>
<br>
    We can still add optional support font collections (noting that opentype.js cannot implement this), but allowing a trivial `#<index>` at the font file URL. Like<br>
    <br>
    FontStyle {<br>
      url "my-font-collection.ttc#1"<br>
    }<br>
    <br>
    And in the most common case, it is simple:<br>
<br>
    FontStyle {<br>
      url "my-font-file.ttf"<br>
    }<br>
    <br>
    Advantage of FontStyle.url: The common use-case, which is: font file is one family with one style, remains now trivial. All my questions from AD 2 disappear :) And all implementations can easily support it.<br>
    <br>
Regards,<br>
Michalis</div>
<br>
<div>
<div dir="ltr">pon., 3 mar 2025 o 21:00 Andreas Plesch <<a href="mailto:andreasplesch@gmail.com" target="_blank">andreasplesch@gmail.com</a>> napisał(a):<br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr">
<div>Thanks, I think that captures the design ideas well.</div>
<div><br>
</div>
<div>I think font collection files are very rare. They are explicitly not supported by the opentype.js library (<a href="https://github.com/opentypejs/opentype.js/discussions/668" target="_blank">https://github.com/opentypejs/opentype.js/discussions/668</a>).
 But they do exist and are supported by the freetype library. So it could become optional for x3d browsers to support those or not, perhaps via component levels. There seem to be many tools which can split a font collection file into separate, single font files.</div>
<div><br>
</div>
<div>Following CSS, one idea to deal with font collections (.ttc, .otc files, also as embedded in woff) would be to require an author to select a specific, single font from a collection via url# fragment syntax:</div>
<div><br>
</div>
<div>url=' "<a href="https://server/path/largeExoticFontLibrary.ttc#Postscript_name_of_FontA" target="_blank">https://server/path/largeExoticFontLibrary.ttc#Postscript_name_of_FontA</a>" '</div>
<div><br>
</div>
<div>CSS uses the Postscript name (format defined in a RFC, <a href="https://www.rfc-editor.org/rfc/rfc8081#section-4.2" target="_blank">https://www.rfc-editor.org/rfc/rfc8081#section-4.2</a>)
 for selection according to the CSS spec.</div>
<div><br>
</div>
<div>That way font collection files can be treated the same as single font files. I do not know if or how freetype manages font collection files. Also, I do not know if the CSS syntax above is supported by web browsers (but I would expect them to,
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1529652" target="_blank">
https://bugzilla.mozilla.org/show_bug.cgi?id=1529652</a> says no).</div>
<div><br>
</div>
<div>For global FontLibrary scope, in my opinion, the FontLibrary.family field should not be optional but required, again following the CSS pattern. The family name is easy for an author to add, and makes it unambiguous for a x3d browser to match, without first
 downloading the file for inspection. This then would mean that an empty family field does not guarantee a match although a browser may use the internal font name(s) as a fallback.</div>
<div><br>
</div>
<div>With the url selection mechanism above, a global FontLibray node may not be necessary at all. But it remains questionable if there is enough library support for font collection files in general.</div>
<div><br>
</div>
<div>-Andreas</div>
<div><br>
</div>
</div>
<br>
<div>
<div dir="ltr">On Mon, Mar 3, 2025 at 12:26 PM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> wrote:<br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<div dir="ltr">
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Excellent analysis together is much appreciated.</div>
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
To facilitate continue discussion on this highly detailed discussion, I have a applied some additions to the "design draft" specification prose:</div>
<ul style="direction:ltr;list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">Add FontLibrary family field</div>
</li><ul style="direction:ltr;list-style-type:circle">
<li style="font-family:"Courier New",monospace;font-size:10pt;color:rgb(0,0,0)">
<div style="direction:ltr">SFString [in,out] family               ""     (under consideration)</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">The <i>family</i> field provides an identifying name for the associated font library. This field provides a reference label for the
<i>family</i> field in a corresponding FontStyle or ScreenFontStyle node. </div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">(Editors note: this approach is similar to how CSS can identify font family for use in HTML.)y </div>
</li></ul>
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">(Editors note: key design question for whether global scope is needed: can a single font file contain more than one font?)</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">Added description for EXAMPLE 1. </div>
</li><ul style="direction:ltr;list-style-type:circle">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">FontLibrary node with global scope, where font family identification is deduced from name metadata within the font file.</div>
</li></ul>
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">Added second example, adapting Holgers design-exploration example</div>
</li><ul style="direction:ltr;list-style-type:circle">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">EXAMPLE 2. FontLibrary nodes each having local scope within parent FontStyle node, where font family identification is provided by matching values for corresponding
<i>family </i>fields.</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr"># example derived from <a href="https://create3000.github.io/preview/playground/?url=https://gist.githubusercontent.com/create3000/6d3992dea7e641bb59645684ca468ce7/raw/a63e66e23b305478fbfdee9e67d7db9cad1f8e72/FontLibrary.x3dv" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248LPlnk359697" title="https://create3000.github.io/preview/playground/?url=https://gist.githubusercontent.com/create3000/6d3992dea7e641bb59645684ca468ce7/raw/a63e66e23b305478fbfdee9e67d7db9cad1f8e72/FontLibrary.x3dv" target="_blank">
FontLibrary.x3dv</a> (Holgers example)</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">Moved FontLibrary nodes as <i>fontLibrary </i>field in respective FontStyle nodes, added FontLibrary DEF and matching
<i>family </i>fields.</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">Screenshot attached - wow, X_ITE rendered it correctly without further software adjustment!  🙂</div>
</li></ul>
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0);display:block">
<div style="direction:ltr"><br>
</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">X3D 4.1 Draft Architecture, clause 15 Text component, 15.4.1
<b>FontLibrary</b></div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#FontLibrary" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA94f71b76-541e-f3e5-a84e-8a1e4de73549" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#FontLibrary</a></div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">X3D 4.1 Draft Architecture, clause 15 Text component, 15.4.2
<b>FontStyle</b></div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#FontStyle" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248LPlnk" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#FontStyle</a></div>
<div style="direction:ltr"><br>
</div>
</li></ul>
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Hopefully this is capturing and synthesizing everyone's intent.  Further clarifications and refinement are of course welcome.</div>
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Onward we go, getting clearer through scrutiny during each pass.  Have fun with X3D FontLibrary!</div>
<div id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248x_Signature">
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt"><br>
</span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">all the best, Don</span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">--</span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">Don Brutzman  Naval Postgraduate School, Code USW/Br       
<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a></span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149</span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">X3D graphics, virtual worlds, navy robotics
<a href="https://faculty.nps.edu/brutzman" target="_blank">https://faculty.nps.edu/brutzman</a></span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt"> </span></p>
</div>
<div id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248x_appendonsend"></div>
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<hr style="direction:ltr;display:inline-block;width:98%">
<div dir="ltr" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248x_divRplyFwdMsg">
<span style="font-family:Calibri,sans-serif;font-size:11pt;color:rgb(0,0,0)"><b>From:</b> Andreas Plesch <<a href="mailto:andreasplesch@gmail.com" target="_blank">andreasplesch@gmail.com</a>><br>
<b>Sent:</b> Monday, March 3, 2025 4:06 AM<br>
<b>To:</b> Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>><br>
<b>Cc:</b> Holger Seelig <<a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a>>; Extensible 3D (X3D) Graphics public discussion <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br>
<b>Subject:</b> Re: [x3d-public] draft X3D 4.1 prose for font files and libraries</span></div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">Similar to Michalis viewpoint, I also see advantages of a FontStyle.url (or FontStyle.fontLibrary) field over a global FontLibrary node. x3dom currently does not need to download, parse or render font files at all since this can all
 be delegated to the web browser in which x3dom is necessarily embedded. It does not currently need a library such as opentype.js and can take advantage of the rapid pace of web browser development. For example, x3dom could use variable fonts or color fonts.</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">On Sun, Mar 2, 2025 at 6:26 PM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA9533c313-385a-7485-0712-bf4d78a4599c" target="_blank">brutzman@nps.edu</a>> wrote:</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
An optional <i>family</i> field might be helpful for FontLibrary but probably only when a single font family is contained in that file.</div>
</blockquote>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">True, a FontLibrary.family field would only be helpful in that case. However, the vast majority of font files only contain one font family. In fact, I have not come across any font file which contains multiple families (tfc,otc).
 Variable fonts have one family but multiple styles and weights.</div>
<div style="direction:ltr">My suggestion would be to strongly recommend to authors to provide a FontLibrary.family name. This guarantees correct matching with a FontStyle. In fact, x3dom would effectively require use of the field. </div>
<div style="direction:ltr"><br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Font files can also be collections according to WOFF2 Recommendation.</div>
<ul style="direction:ltr;list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">WOFF File Format 2.0, W3C Recommendation, 08 August 2024</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">Status of This Document</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">"The WOFF 2.0 specification is implemented in all major browsers, and is widely used on production websites. It supports the entirety of the TrueType and OpenType specifications, including Variable fonts, Chromatic fonts, and font
 Collections."</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr"><a href="https://www.w3.org/TR/WOFF2" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAc24fc0c4-74ae-94ae-e75f-342f3e3cb8f0" target="_blank">https://www.w3.org/TR/WOFF2</a></div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">4.2. Collection directory format</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">"If input font is a collection, the <a href="https://www.w3.org/TR/WOFF2/#table_dir_format" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA4b167982-baed-b7c3-fb64-f73263baa768" style="text-align:left" target="_blank">
table directory</a> contains a single entry for each unique table in the entire collection, regardless of whether a table is shared among different fonts in a collection or not. Thus, the table directory for a font collection compressed with WOFF2 comprises
 all tables from all fonts contained in the font collection file."</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr"><a href="https://www.w3.org/TR/WOFF2/#collection_dir_format" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA0425da44-9c86-a766-4aac-0c201f4a6c1b" target="_blank">https://www.w3.org/TR/WOFF2/#collection_dir_format</a></div>
</li></ul>
</blockquote>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">My understanding is that this collection capability is only used by some Asian fonts where the same glyph can be shared by different font families, for different characters.</div>
<div style="direction:ltr">I am not sure how CSS or freetype is currently dealing with this situation. It should be insightful to find out. Found out something for CSS, see below.</div>
<div style="direction:ltr"><br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
We might be able to define this so that it works both ways, either with matching <i>
family </i>names or not...  for example, </div>
<ul style="direction:ltr;list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">a FontLibrary with a woff url referring to a single font might be an unambiguous child of FontStyle as FontStyle.fontLibrary.  This approach completely avoids any need to check for precise
<i>family </i>naming matches., the FontStyle only uses that contained font</div>
</li></ul>
</blockquote>
<div style="direction:ltr">Yes, I think this should work fine. </div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<ul style="direction:ltr;list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">a FontLibrary with a woff url referring to a collection of fonts, which are each named and matchable, might also be used for matching with FontStyle.family.</div>
</li></ul>
</blockquote>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">I fear we do not know enough about font files with a collection of fonts are intended to be used.</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<ul style="direction:ltr;list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">DEF/USE declarations allow us to have both global and restricted availability as desired by the author.  In other words,</div>
</li><ul style="direction:ltr;list-style-type:circle">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">a FontLibrary might not be referenced as a field and have global scope (the prose that is currently in the 4.1 design draft), or else</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr">a FontLibrary might also be the child of a FontStyle node (something we might add to the 4.1 design draft).</div>
</li></ul>
</ul>
</blockquote>
<div style="direction:ltr"> </div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Seems like we might be able to "take the fork in the road" here, giving authors flexibility.  Hmmm...</div>
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Somewhat related: since staying aligned with CSS practice is important, here is an example of further interest.  The following provides a clear example of how an author can define CSS so that html can use four different woff files for plain, bold, bold-italic,
 italic markup (using <b> and <i> elements).  Food for thought perhaps.</div>
<ul style="direction:ltr;list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr"> How do I use .woff fonts for my website?</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="direction:ltr"><a href="https://stackoverflow.com/questions/12812441/how-do-i-use-woff-fonts-for-my-website" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA8316df94-eff1-7274-9d54-13826cdca6bb" target="_blank">https://stackoverflow.com/questions/12812441/how-do-i-use-woff-fonts-for-my-website</a></div>
</li></ul>
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
</blockquote>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">This is an old but still working and good example. <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAc56d6232-cbe3-d619-cf2d-df8867ee1681" target="_blank">
https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face</a> and <a href="https://drafts.csswg.org/css-fonts/#font-face-rule" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAff43d135-7e1a-db2c-262f-b5845a691996" target="_blank">
https://drafts.csswg.org/css-fonts/#font-face-rule</a> have more details.</div>
<div style="direction:ltr">Note how the font-family is a given custom name which is then used in other css rules.</div>
<div style="direction:ltr"><a href="https://drafts.csswg.org/css-fonts/#font-face-src-loading" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA5b2680bc-893e-f7d8-25d3-d13e0c3fd559" target="_blank">https://drafts.csswg.org/css-fonts/#font-face-src-loading</a> has
 the syntax of how to select a font from a collection, using its Postscript name (so not the family name or full name).</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">All the best, -Andreas</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr"><br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr;font-family:"Courier New";font-size:9pt;color:rgb(0,0,0)">
all the best, Don</div>
<div id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248x_x_m_-5021744886155553880m_835609396571960773m_-6042952931350978726Signature">
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">--</span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">Don Brutzman  Naval Postgraduate School, Code USW/Br       
<a href="mailto:brutzman@nps.edu" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA14a630ab-0e87-b177-db38-1ae725121658" style="margin-top:0px;margin-bottom:0px" target="_blank">
brutzman@nps.edu</a></span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149</span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">X3D graphics, virtual worlds, navy robotics
<a href="https://faculty.nps.edu/brutzman" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAede865cf-508c-7e56-61e8-b70f5e247921" style="margin-top:0px;margin-bottom:0px" target="_blank">
https://faculty.nps.edu/brutzman</a></span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt"> </span></p>
</div>
<div id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248x_x_m_-5021744886155553880m_835609396571960773m_-6042952931350978726appendonsend">
</div>
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<hr style="direction:ltr;display:inline-block;width:98%">
<div dir="ltr" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248x_x_m_-5021744886155553880m_835609396571960773m_-6042952931350978726divRplyFwdMsg">
<span style="font-family:Calibri,sans-serif;font-size:11pt;color:rgb(0,0,0)"><b>From:</b> x3d-public <<a href="mailto:x3d-public-bounces@web3d.org" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA36c5cf10-0c96-b4e0-3bf3-f9ab5411cd4b" target="_blank">x3d-public-bounces@web3d.org</a>>
 on behalf of Andreas Plesch via x3d-public <<a href="mailto:x3d-public@web3d.org" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAc3e8d0bb-a1df-69de-3724-663cc64a9f7f" target="_blank">x3d-public@web3d.org</a>><br>
<b>Sent:</b> Sunday, March 2, 2025 1:39 PM<br>
<b>To:</b> Holger Seelig <<a href="mailto:holger.seelig@yahoo.de" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA992be58e-93d5-6dbb-930b-9bf533847b09" target="_blank">holger.seelig@yahoo.de</a>><br>
<b>Cc:</b> Andreas Plesch <<a href="mailto:andreasplesch@gmail.com" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAbd0fba8b-5748-c105-87e7-01ce3774097a" target="_blank">andreasplesch@gmail.com</a>>; X3D <<a href="mailto:x3d-public@web3d.org" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAb6098b6d-1769-2a25-4693-71e63a61e68c" target="_blank">x3d-public@web3d.org</a>><br>
<b>Subject:</b> Re: [x3d-public] draft X3D 4.1 prose for font files and libraries</span>
<div> </div>
</div>
<div style="direction:ltr">Thanks. That is what I thought. But should this mapping be part of the X3D spec. ? Or should this mapping be left at the digression of the X3D browser as a best effort ? Eg. most browsers may use fontFamily to associate a FontStyle.family
 with but some browsers may prefer to use fullName and expect FontStyle.family to match that. Should the matching be case sensitive ?</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">I think it would be cleaner to not have to rely on matching font names. A FontLibrary.family would allow that and not require any changes to FontStyle as it is defined.</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">-Andreas</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">On Sun, Mar 2, 2025 at 3:44 PM Holger Seelig <<a href="mailto:holger.seelig@yahoo.de" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAecaa3c4b-32d4-fd12-1fc0-9cdf6268326e" target="_blank">holger.seelig@yahoo.de</a>> wrote:</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr">fontFamily - is equal to the FontStyle.family field</div>
<div style="direction:ltr">fontSubfamily - is equal to FontFamily.style field but can contain spaces and any kind of chars or even special chars</div>
<div style="direction:ltr">fullName - could be usefull to directly access a specific font</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">This means more or less that the FontFamily.style field should be able to have more possible values than the current 4 (PLAIN, BOLD, ITALIC, BOLDITALIC)  so that values like "Regular", "Oblique", "Outline", "Outline Bold" or what
 ever the Font Designer wishes it should be called and written.</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">Best regards,</div>
<div style="direction:ltr">Holger</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;color:rgb(0,0,0)">--</div>
<div style="direction:ltr;text-align:left;text-indent:0px;color:rgb(0,0,0)">Holger Seelig</div>
<div style="direction:ltr;text-align:left;text-indent:0px;color:rgb(0,0,0)">Leipzig, Germany</div>
<div style="direction:ltr;text-align:left;text-indent:0px;color:rgb(0,0,0)"><br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;color:rgb(0,0,0)"><a href="mailto:holger.seelig@yahoo.de" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA98adc71c-3b2d-7120-93b8-7ed2ed2e8d09" target="_blank">holger.seelig@yahoo.de</a></div>
<div style="direction:ltr;text-align:left;text-indent:0px;color:rgb(0,0,0)"><a href="https://create3000.github.io/x_ite/" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAa1309fdd-ac34-3233-fb05-d4241b630433" target="_blank">https://create3000.github.io/x_ite/</a></div>
<div style="direction:ltr"><br>
</div>
<blockquote>
<div style="direction:ltr">Am 02.03.2025 um 13:21 schrieb Holger Seelig via x3d-public <<a href="mailto:x3d-public@web3d.org" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA654c4c4a-2b2a-9c44-8dcb-307363d1b399" target="_blank">x3d-public@web3d.org</a>>:</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">It seems I was wrong with my last email. </div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">I created a reference implementation of FontLibrary node to test and play with.</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">It is available at:</div>
<div style="direction:ltr"><a href="https://create3000.github.io/test/?url=https://gist.githubusercontent.com/create3000/6d3992dea7e641bb59645684ca468ce7/raw/a63e66e23b305478fbfdee9e67d7db9cad1f8e72/FontLibrary.x3dv" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA03f5eef6-01e6-7a75-e4d9-7efcc4e2c1aa" target="_blank">https://create3000.github.io/test/?url=https://gist.githubusercontent.com/create3000/6d3992dea7e641bb59645684ca468ce7/raw/a63e66e23b305478fbfdee9e67d7db9cad1f8e72/FontLibrary.x3dv</a></div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">Best regards,</div>
<div style="direction:ltr">Holger</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px">--</div>
<div style="direction:ltr;text-align:left;text-indent:0px">Holger Seelig</div>
<div style="direction:ltr;text-align:left;text-indent:0px">Leipzig, Germany</div>
<div style="direction:ltr;text-align:left;text-indent:0px"><br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px"><a href="mailto:holger.seelig@yahoo.de" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAeadb5002-39cc-2275-fe35-f12f271b4873" target="_blank">holger.seelig@yahoo.de</a></div>
<div style="direction:ltr;text-align:left;text-indent:0px"><a href="https://create3000.github.io/x_ite/" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA45bf5146-2995-e975-9fde-dcf6c3641e32" target="_blank">https://create3000.github.io/x_ite/</a></div>
<div style="direction:ltr"><br>
</div>
<blockquote>
<div style="direction:ltr">Am 02.03.2025 um 05:26 schrieb Andreas Plesch via x3d-public <<a href="mailto:x3d-public@web3d.org" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA5294d387-6d39-ef1e-66eb-67a5958adf89" target="_blank">x3d-public@web3d.org</a>>:</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
Ok, I think these explanations make the intention very clear.</div>
<div style="direction:ltr;text-align:left;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
On Sat, Mar 1, 2025 at 3:29 PM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAf7cb509d-a165-02d0-be1e-82601061474d" target="_blank">brutzman@nps.edu</a>> wrote:</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
Thanks for careful scrutiny and questions.  Overall responses:</div>
<ol start="1" style="direction:ltr;text-align:left;list-style-type:lower-alpha">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px">We have not seen a need for FontLibrary to be referenced in the field of any other node.  It adds to the fonts available in the browser.</div>
</li></ol>
</blockquote>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
Then a FontLibrary node needs to be able to be a root node: <a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/concepts.html#Rootnodes" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA3d7e848d-81bc-bdf5-52cf-d34693612edc" target="_blank">
https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/concepts.html#Rootnodes</a></div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
So it could be a ChildNode or another class of root nodes.</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<ol start="1" style="direction:ltr;text-align:left;list-style-type:lower-alpha">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px"><br>
</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px">If someone has a use case where FontLibrary needs to be specifically referred to by individual FontStyle or ScreenFontStyle nodes, please state it.</div>
</li></ol>
</blockquote>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
This would clearly associate a font with an individual FontStyle and avoid mistakes.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
In rare cases there may be two different fonts which have the same family name. There is no central registry for font family names.<br>
<br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<ol start="1" style="direction:ltr;text-align:left;list-style-type:lower-alpha">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px"><br>
</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px">Since fonts themselves change so infrequently, keeping FontLibrary scope global and not requiring reloads of any given url (local file or online) seems sensible.</div>
</li></ol>
</blockquote>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
Rereferencing by DEF/USE a FontStyle.fontLibrary would not require reloads. In terms of loading efficiency it does not matter if the scope is Scene or FontStyle/Text.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<ol start="1" style="direction:ltr;text-align:left;list-style-type:lower-alpha">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px"><br>
</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px">Since X3DUrlNode functionality of the url (and related) fields offers so much functionality, making X3DUrlNode an abstract interface for FontLibrary adds much common functionality found in other X3DUrlNode
 nodes that have url functionality (Anchor, ImageTexture, Inline, and others).  This simplifies implementations, keeps functionality consistent, and provides well-understood semantics to authors.  Furthermore, allowing an author to selectively load a new font
 file at run time offers greater flexibility for textual presentation and animation</div>
</li></ol>
</blockquote>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
 </div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<ol start="1" style="direction:ltr;text-align:left;list-style-type:lower-alpha">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px"><br>
</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px">Having url and run-time capabilities means that FontLibrary would be an X3D node, not an X3D statement.</div>
</li></ol>
</blockquote>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
True. The statement role just seems to fit better as FontLibray would not be referenced by any field. Perhaps there is a way to adopt the url field for such a statement. </div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<ol start="1" style="direction:ltr;text-align:left;list-style-type:lower-alpha">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px"><br>
</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px">The availability of DEF and USE capabilities is perhaps not needed for regular use.  Nevertheless it might provide interesting options if an author wants to use FontLibrary in combination with Script
 or ProtoDeclare/ExternProtoDeclare functionality.  For example, a scene might have a Script or ProtoInstance that uses a specific custom ExternProtoDeclare reference.  Several possibilities for advanced authoring here, just taking advantage of existing X3D
 flexibility and extensibility.</div>
</li></ol>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
See <b><i>response</i></b><i> </i>paragraphs inserted below for specific replies.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<br>
</div>
</blockquote>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif">
<span style="font-size:14.6667px"><b><i>response:</i>  </b></span><span style="font-size:11pt">We are thinking that if inconsistencies exist between a specified FontStyle family field and the font file, then such cases are best handled on a best-effort basis
 by browsers without further complex (and possibly contradictory) guidance in specification prose.  Perhaps this stance should be a NOTE?</span></div>
</blockquote>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
Another source of conflict is the font family name. While most (perhaps not all) font files contain a correct family name, it is difficult to extract and requires a library. For example, web browsers do not extract the family name from a font file, and therefore
 do not rely on such an extracted name. An author may not even know the exact font name as contained in a font file. The family names shown in online font collections may not match exactly what is contained in a file.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-size:12px"><span style="font-family:Helvetica">Don's example scene is actually a victim of this potential for confusion. The family name
</span><span style="font-family:"Courier New",monospace;background-color:rgb(255,255,0)">Playwright_CA_Guides
</span><span style="font-family:Helvetica">is in reality not the same name as given in the woff2 file. I think it is
</span><span style="font-family:"Courier New",monospace;background-color:rgb(255,255,0)">Playwright CA Guides.</span><span style="font-family:Helvetica"> I may be responsible for this since I used it in an example but it shows how quickly this can go wrong.</span></div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
The solution in CSS is to allow authors to define their own family name for the font given in the font file.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
The X3D equivalent would be to add a SFString FontLibrary.family field which would be the authoritative family name. The family name in the font file would be ignored.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
Then the author can use the same name in the FontStyle.family field. This starts to sound a lot like DEF/USE names which would work similarly for a Font Style.font Library field node.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
So please consider adding a SFString FontLibrary.family field to FontLibrary.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
I think x3dom may not be able to fully implement FontLibrary if extraction of the family name from the font file is necessary since the size of the needed libraries may not be commensurate with the added benefit.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
How does FontLibrary define a "collection of one or more font families" ? Is there an example of a font file containing more than one font family ?</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px"><span style="font-family:Helvetica;font-size:12px">"</span><span style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px;background-color:rgb(255,255,0)">An empty
<i>url</i> list indicates that the default set of fonts provided by the browser are used."</span></div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px"><span style="font-family:Helvetica;font-size:12px">The url field always exists but can be empty. So
</span><span style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px;background-color:rgb(255,255,0)">is optional and
</span><span style="font-family:Helvetica;font-size:12px">could be removed.</span></div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
Is that case different from not providing a FontLibrary node at all ? If not, perhaps make this stronger: "list is equivalent to not including the FontLibrary node."</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
Andreas</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
P.S. Interesting reference</div>
<ul style="direction:ltr;text-align:left;list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px">Google Fonts: Using type in AR & VR</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px"><a href="https://fonts.google.com/knowledge/using_type_in_ar_and_vr" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAcb6713d0-d3d3-fce7-8a39-7fa351fa53af" target="_blank">https://fonts.google.com/knowledge/using_type_in_ar_and_vr</a></div>
<div style="direction:ltr;text-align:left;text-indent:0px"><br>
</div>
</li></ul>
<div id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248x_x_m_-5021744886155553880m_835609396571960773m_-6042952931350978726x_m_-8762856311448929086m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277Signature">
<div style="margin:0in;font-family:"Courier New";font-size:9pt">all the best, Don</div>
<div style="margin:0in;font-family:"Courier New";font-size:9pt">--</div>
<div style="margin:0in;font-family:"Courier New";font-size:9pt">Don Brutzman  Naval Postgraduate School, Code USW/Br        <a href="mailto:brutzman@nps.edu" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAa6c88924-c175-5473-1f39-fb21de0d1597" target="_blank">brutzman@nps.edu</a></div>
<div style="margin:0in;font-family:"Courier New";font-size:9pt">Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149</div>
<div style="margin:0in;font-family:"Courier New";font-size:9pt">X3D graphics, virtual worlds, navy robotics
<a href="https://faculty.nps.edu/brutzman" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAb92d0afc-b240-53a1-38c4-77a888557bf9" target="_blank">
https://faculty.nps.edu/brutzman</a></div>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt"> </span></p>
</div>
<div id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248x_x_m_-5021744886155553880m_835609396571960773m_-6042952931350978726x_m_-8762856311448929086m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277appendonsend">
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<br>
</div>
<hr style="direction:ltr;text-align:left;text-indent:0px;display:inline-block;width:1012.06px">
<div id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248x_x_m_-5021744886155553880m_835609396571960773m_-6042952931350978726x_m_-8762856311448929086m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277divRplyFwdMsg" dir="ltr">
<span style="font-family:Calibri,sans-serif;font-size:11pt"><b>From:</b> x3d-public <<a href="mailto:x3d-public-bounces@web3d.org" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAba509a2f-2fe4-e83e-6820-2161d84d2719" target="_blank">x3d-public-bounces@web3d.org</a>>
 on behalf of Andreas Plesch via x3d-public <<a href="mailto:x3d-public@web3d.org" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA3c23e8f2-f461-a1bb-b6d4-f2dde5f5a28a" target="_blank">x3d-public@web3d.org</a>><br>
<b>Sent:</b> Saturday, March 1, 2025 6:45 AM<br>
<b>To:</b> X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA8cc92d04-13c3-449b-a293-21b14de5d175" target="_blank">x3d-public@web3d.org</a>><br>
<b>Cc:</b> Andreas Plesch <<a href="mailto:andreasplesch@gmail.com" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA854b6b60-f0ff-8114-8165-9f72db234e03" target="_blank">andreasplesch@gmail.com</a>><br>
<b>Subject:</b> Re: [x3d-public] draft X3D 4.1 prose for font files and libraries</span>
<div> </div>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
I basically had the same questions as Michalis.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
Comments below.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
 </div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
Date: Sat, 1 Mar 2025 05:52:24 +0100<br>
From: Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA76c0ad6d-2b3c-9ac3-ecb6-608d33f09132" target="_blank">michalis.kambi@gmail.com</a>><br>
<br>
As for FontLibrary,<br>
<a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/text.html#FontLibrary" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAa319c118-f5c0-1629-e32d-7289901aabd1" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/text.html#FontLibrary</a><br>
: I admit I don't understand this proposal (yet).<br>
<br>
1. Where is the FontLibrary actually used? It doesn't seem you can refer to<br>
a FontLibrary node in any way. It's also not X3DChildNode, so you cannot<br>
just place it in groups.</div>
</blockquote>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
This is a big missing piece.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
After some thought, I think the idea is to give the X3D browser information on how to render fonts which are referenced in a FontStyle.family field. </div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
One option is to think of it not as a Node but as a Statement describing a resource available to the X3D browser in general.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
Another option is to make it part of WorldInfo as a value for a new WorldInfo.fonts field ?</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
The idea came up as an alternative to a FontStyle.url field, so see below.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
 </div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif">
<span style="font-size:14.6667px;background-color:rgb(255,255,255)"><b><i>response:</i></b><i> </i></span><span style="font-size:11pt">See above.</span></div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
2. The sentence """If present, only the first active font library retrieved<br>
from the url list shall be used."""" --- What is the meaning of word "used"<br>
in this sentence? Used for what?</div>
</blockquote>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
What is 'active' ? Probably accessible</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
"Used": ?</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<b><i>response: </i></b>We were trying to emphasize that only one font file can be loaded by a FontLibrary node.  The functionality of an X3D url is unchanged, the first working address in the list is used.  This is trying to complement the more general wording
 in 9.3.2 concisely... Specific wording suggestions always welcome.</div>
<ul style="direction:ltr;text-align:left;list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px">X3D 4.1 (draft) Architecture, clause 9 Networking component, 9.3.2 X3DUrlObject</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px">"<span style="background-color:rgb(255,255,0)">All
<i>url</i> fields can hold multiple string values. The strings in these fields indicate multiple locations to search for data in the order listed. If the X3D browser cannot locate or interpret the data specified by the first location, it shall try the second
 and subsequent locations in order until a location containing interpretable data is encountered. X3D browsers only have to interpret a single string</span>. If no interpretable locations are found, the node type defines the resultant default behaviour."</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<div style="direction:ltr;text-align:left;text-indent:0px;font-size:14.6667px">
<span style="background-color:rgb(255,255,255)"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/networking.html#X3DUrlObject" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA3be924e7-3483-ef74-d8e0-5c7b77c1a983" style="margin:0px;background-color:rgb(255,255,255);text-align:left" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/networking.html#X3DUrlObject</a></span></div>
<div id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248x_x_m_-5021744886155553880m_835609396571960773m_-6042952931350978726x_m_-8762856311448929086m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277LPBorder_GTaHR0cHM6Ly93d3cud2ViM2Qub3JnL3NwZWNpZmljYXRpb25zL1gzRHY0RHJhZnQvSVNPLUlFQzE5Nzc1LTF2NC4xLUNELy9QYXJ0MDEvY29tcG9uZW50cy9uZXR3b3JraW5nLmh0bWwjWDNEVXJsT2JqZWN0" style="width:800px;margin-top:16px;margin-bottom:16px;max-width:800px;min-width:424px">
<table id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248x_x_m_-5021744886155553880m_835609396571960773m_-6042952931350978726x_m_-8762856311448929086m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277LPContainer995060" style="border-width:1px;border-style:solid;border-color:rgb(200,200,200);border-radius:2px;width:800px">
<tbody>
<tr>
<td style="width:744px;height:148px">
<div id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248x_x_m_-5021744886155553880m_835609396571960773m_-6042952931350978726x_m_-8762856311448929086m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277LPTitle995060" style="font-size:21px;font-weight:300;margin-right:8px;font-family:wf_segoe-ui_light,"Segoe UI Light","Segoe WP Light","Segoe UI","Segoe WP",Tahoma,Arial,sans-serif;margin-bottom:12px">
<a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/networking.html#X3DUrlObject" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAea519b6c-3349-d3cf-a9a4-0125132cd524" style="text-decoration:none" target="_blank">X3D
 Architecture 4.1 draft — ISO/IEC 19775-1:202x — 9 Networking component</a></div>
<div id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248x_x_m_-5021744886155553880m_835609396571960773m_-6042952931350978726x_m_-8762856311448929086m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277LPDescription995060" style="font-size:14px;max-height:100px;color:rgb(102,102,102);font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif;margin-bottom:12px;margin-right:8px;overflow:hidden">
9.2 Concepts 9.2.1 URLs, URNs and URIs. A URL (Uniform Resource Locator) is a form of Universal Resource Identifier (URI) described in that specifies a file located on a particular server and accessed through a specified protocol (such as file:, http: or https:).In
 this document, the upper-case term URL refers to a Uniform Resource Locator, while the italicized lower-case version url refers to ...</div>
<div id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248x_x_m_-5021744886155553880m_835609396571960773m_-6042952931350978726x_m_-8762856311448929086m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277LPMetadata995060" style="font-size:14px;color:rgb(166,166,166);font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif">
<a href="http://www.web3d.org/" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAb7e62b5e-c4dd-76fe-15c4-5908dbf36078" target="_blank">www.web3d.org</a></div>
</td>
</tr>
</tbody>
</table>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px"><br>
</div>
</li></ul>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
3. """Individual font library files can be used by multiple FontStyle nodes<br>
in a scene.""" -- How? FontStyle does not refer to FontLibrary. And I<br>
understand in this version, FontStyle would not have its own FontStyle.url<br>
field.<br>
<br>
     Did you maybe want to add a field like "SFNode FontLibrary<br>
fontLibrary" to FontStyle or Text? Or make FontLibrary a X3DChildNode?</div>
</blockquote>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
That was my first thought as well but see above.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
A simple way to make a FontLibrary url available to multiple FontStyle nodes is by DEF/USE.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
A FontStyle.fontLibrary field is preferred over a global scope since it clearly associates a font to a FontStyle/Text.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
It is better not to have to rely on the family name to identify a font. Having to rely on the family name is more error prone for both the author and the browser.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<b><i>response</i>: </b>the cyan text for FontStyle draft prose shows the less-desirable alternative.  Have added strikethrough (using html <del> tag) and better description to indicate that we moved url fields from FontStyle to FontLibrary).  The cyan alternative
 is there now for comparison, essentially the prose is the same.  Hopefully the draft prose is clearer now, with no duplication of functionality.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif">
<span style="font-size:14.6667px;background-color:rgb(255,255,255)"><b><i>response:</i> 
</b></span><span style="font-size:11pt">We are thinking that if inconsistencies exist between a specified FontStyle family field and the font file, then such cases are best handled on a best-effort basis by browsers without further complex (and possibly contradictory)
 guidance in specification prose.  Perhaps this stance should be a NOTE?</span></div>
</blockquote>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
 </div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
4. A testcase, preferably many testcase(s), explaining the FontLibrary<br>
usage (X3D files + intended rendering) would very helpful. (Same goes for<br>
the previous proposal actually.) Please provide testcases along with spec<br>
prose -- they make the intention more obvious.</div>
</blockquote>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
Including edge cases if possible.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<i><br>
response</i>:  Agreed.  We will review the following simple example in our next editors meeting.  More examples are welcome from people contributing to this list.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;margin-top:18px;margin-bottom:18px;font-family:"Courier New",monospace;font-size:9pt">
<span style="background-color:rgb(255,255,0)">EXAMPLE</span></div>
<pre><div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif"><span style="font-family:"Courier New",monospace;font-size:9pt;background-color:rgb(255,255,0)">    FontLibrary {    # example derived from <a href="https://andreasplesch.github.io/Library/Viewer/index.html?url=https://gist.githubusercontent.com/andreasplesch/dc9111dcd106f1a69d567ceca8f52701/raw/8cdf9764f11e08b5f541dee487fc0811bb0cf927/FontHaveFunWithX3D.x3d" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWA3c72000b-395d-653b-fba7-00d627056609" target="_blank">TextHaveFunWithX3D.x3d</a>
      url ["MjQamj1kuP_soQ3o-rysO9Ci_8oJlIUUInI.woff2" 
           "<a href="https://fonts.gstatic.com/s/playwritecaguides/v1/MjQamj1kuP_soQ3o-rysO9Ci_8oJlIUUInI.woff2" id="m_5654976658779296540m_4137532624501646688m_-7077685980425028797x_m_-3972650858768268068m_-7542582493526334248OWAab056450-a006-cb64-da83-f9af5eb39f86" target="_blank">https://fonts.gstatic.com/s/playwritecaguides/v1/MjQamj1kuP_soQ3o-rysO9Ci_8oJlIUUInI.woff2</a>"]
    }
    Shape {
      # &#9786; = ☺ smiley face emoticon, and "" means skip a line
      geometry Text {
        string [ "Have fun" "with X3D!" "" ":)   &#9786;" ]
        fontStyle FontStyle {
            spacing 1.5
            family=["Playwright_CA_Guides"]
            justify [ "MIDDLE" "MIDDLE"  ] 
        }
      }
    }</span><span style="font-size:11pt">
</span></div></pre>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
Overall, so far, I admit FontLibrary is confusing to me, I don't know what<br>
it means. The previous proposal (extending FontStyle) seems more<br>
straightforward -- a few people (including me) had feedback, but it seems<br>
that we all "got the intention" of FontStyle.url correctly, we just pointed<br>
some things to improve in wording.</div>
</blockquote>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
One advantage of a FontLibrary (or perhaps just 'Font') node would be DEF/USE.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
As mentioned multiple times, the spec. should include language that the FontStyle.style field may be ignored if a FontLibrary url is accessible as in most cases that url will only provide data for one specific style..</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
Regards, -Andreas</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;margin:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<b><i>response: </i></b>the presence of the css style field might add a whole new level of sophistication and possible edge cases.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;margin:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;margin:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
This again sounds like a rationale for a NOTE in the specification specifically pointing out that browsers have latitude to handle ambiguous cases before falling back to default font... Might be obvious/redundant or might be helpful.</div>
<div style="direction:ltr;text-align:left;text-indent:0px;margin:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;margin:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">
Hope these responses help us converge, again thanks for together thinking things through.  v/r Don</div>
<div style="direction:ltr;text-align:left;text-indent:0px;font-family:Helvetica;font-size:12px">
<br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)"></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></div></div></blockquote></div></blockquote></div></div></div></div></div></blockquote></div></blockquote></div></blockquote></div></div>