<div dir="ltr"><div>As for FontLibrary, <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/text.html#FontLibrary">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/text.html#FontLibrary</a> : I admit I don't understand this proposal (yet). </div><div><br></div><div>1. Where is the FontLibrary actually used? It doesn't seem you can refer to a FontLibrary node in any way. It's also not X3DChildNode, so you cannot just place it in groups. </div><div><br></div><div>2. The sentence """If present, only the first active font library retrieved from the url list shall be used."""" --- What is the meaning of word "used" in this sentence? Used for what?</div><div><br></div><div>3. """Individual font library files can be used by multiple FontStyle nodes in a scene.""" -- How? FontStyle does not refer to FontLibrary. And I understand in this version, FontStyle would not have its own FontStyle.url field.</div><div><br></div><div>     Did you maybe want to add a field like "SFNode FontLibrary fontLibrary" to FontStyle or Text? Or make FontLibrary a X3DChildNode? <br></div><div><br></div><div>4. A testcase, preferably many testcase(s), explaining the FontLibrary usage (X3D files + intended rendering) would very helpful. (Same goes for the previous proposal actually.) Please provide testcases along with spec prose -- they make the intention more obvious.</div><div><br></div><div>Overall, so far, I admit FontLibrary is confusing to me, I don't know what it means. The previous proposal (extending FontStyle) seems more straightforward -- a few people (including me) had feedback, but it seems that we all "got the intention" of FontStyle.url correctly, we just pointed some things to improve in wording.</div><div><br></div><div>Regards,</div><div>Michalis</div><div><br></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">pt., 28 lut 2025 o 19:56 Brutzman, Donald (Don) (CIV) via x3d-public <<a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</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 class="msg-764152103705537030">




<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 everyone for responses, implementation improvements, technical details, and many insights.</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)">
First positive takeaway:  WOFF File Format 2.0 is the clear preference to WOFF 1.0.  </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)">
WOFF File Format 2.0, W3C Recommendation, 08 August 2024</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>"Abstract.  Based on experience with WOFF 1.0, which is widely deployed, this specification was developed to provide improved compression and thus lower use of network bandwidth, while still allowing fast decompression even on mobile
 devices. This is achieved by combining a content-aware preprocessing step and improved entropy coding, compared to the Flate compression used in WOFF 1.0."</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.w3.org/TR/WOFF2/" id="m_-764152103705537030LPlnk601742" target="_blank">https://www.w3.org/TR/WOFF2</a></div>
</li></ul>
<div style="text-align:left;text-indent:0px;margin:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Clearly, from recent excellent emails, there are many implementer-specific issues and interactions when adding font files that are good to know about, but don't necessarily need to be expressed in an X3D model (or the X3D Architecture specification).</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="text-align:left;text-indent:0px;margin:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Dick and I worked further today to assess whether separation of font files from FontStyle node into a FontLibrary node was the preferred to represent this information in an X3D model.  We also repeated WOFF Recommendation's use of term "collection" as part
 of a <b>FontLibrary </b>definition.</div>
<ul style="text-align:left;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)">
The FontLibrary node specifies a collection of one or more font family definitions. A font family may include one or more related font style definitions. FontLibrary provides the ability to selectively load font files for use by
<a href="https://outlook.office.com/mail/id/AAkALgAAAAAAHYQDEapmEc2byACqAC%2FEWg0AN5ikByHYYkeveIfklhUi1gAG%2Blh21AAA?nativeVersion=1.2025.219.400#FontStyle" id="m_-764152103705537030OWA48eb1bc3-3976-86eb-5252-48a98efcb653" style="margin:0px;text-align:left" target="_blank">
FontStyle</a> and <a href="https://outlook.office.com/mail/id/layout.html#ScreenFontStyle" id="m_-764152103705537030OWA206330f6-4b39-a8a9-618b-fc64b4177e07" style="margin:0px;text-align:left" target="_blank">
ScreenFontStyle</a> nodes.</li></ul>
<div style="text-align:left;text-indent:0px;margin:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
FontLibrary node pros (meaning separation of font files from FontStyle node):</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>Keeps existing (and fairly complex) FontStyle implementations unchanged</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>Separation of loading and presentation functionality between two nodes</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>FontLibrary simply adds to the selection of fonts available, and retains emphasis of
<i>family </i>and <i>style </i>fields within a given FontStyle 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>If separate font files redefine a given family (with the same name), then addition of
<i>enabled </i>field might allow authors to determine which of them is relevant.  However
<i>enabled </i>field can be considered redundant (since changing url has same effect).</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>Alternative approach to use of an <i>enabled </i>field, we might also need to add a sentence such as</div>
</li><ul style="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>"If a font family is redefined by multiple FontLibrary nodes, then the first defined family is used."</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>(or we can remain silent and let browser implementations sort that out)</div>
</li></ul>
</ul>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
FontLibrary node cons (meaning bundle all url functionality in FontStyle):</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>Closer coupling of <i>family </i>field and font files themselves, recent email dialog indicates that sometimes the font file simply overrides the family 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>We do not want to change any defined functionality for
<i>family</i> and <i>style </i>fields, they still seem correct in X3D Architecture and no suitable changes yet seen.</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>No need for <i>enabled </i>field.</div>
</li></ul>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Our current opinion is that FontLibrary provides a superior approach to continued growth of FontStyle node.  To facilitate comparison and review, current draft has proposed
<span style="background-color:rgb(255,255,0)">FontLibrary prose in yellow</span>, and alternate (not accepted)
<span style="background-color:rgb(128,255,255)">FontStyle alternative in cyan</span>.</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>X3D 4.1 (draft) Architecture, clause 15 Text component, 15.4.1 FontLibrary</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#FontLibrary" id="m_-764152103705537030LPlnk" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/text.html#FontLibrary</a></div>
<div>
<div id="m_-764152103705537030LPBorder_GTaHR0cHM6Ly93d3cud2ViM2Qub3JnL3NwZWNpZmljYXRpb25zL1gzRHY0RHJhZnQvSVNPLUlFQzE5Nzc1LTF2NC4xLUNEL1BhcnQwMS9jb21wb25lbnRzL3RleHQuaHRtbCNGb250TGlicmFyeQ.." style="width:100%;margin-top:16px;margin-bottom:16px;max-width:800px;min-width:424px">
<table id="m_-764152103705537030LPContainer242911" role="presentation" style="padding:12px 36px 12px 12px;width:100%;border-width:1px;border-style:solid;border-color:rgb(200,200,200);border-radius:2px">
<tbody>
<tr valign="top" style="border-spacing:0px">
<td style="width:100%">
<div id="m_-764152103705537030LPTitle242911" 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 id="m_-764152103705537030LPUrlAnchor242911" href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/text.html#FontLibrary" style="text-decoration:none" target="_blank">X3D Architecture 4.1 draft — ISO/IEC 19775-1:202x
 — 15 Text component</a></div>
<div id="m_-764152103705537030LPDescription242911" 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">
15.2.2.4 Language. The language field specifies the context of the language for the text string in the form of a language and a country in which that language is used. Both the language and the country are specified using the language tags defined in which
 may specify only a country (using the three-character codes defined in ISO 3166) or both a language (using the two-character codes ...</div>
<div id="m_-764152103705537030LPMetadata242911" style="font-size:14px;font-weight:400;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" target="_blank">www.web3d.org</a></div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div><br>
</div>
</li></ul>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Additional questions to ponder, further insights welcome:</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>Our impression of the term 'webfont' is that it is simply a generic term, not a standard or specification per se, and often employed to reference WOFF.  Is that correct?</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>Font files tend to be large.  Might there ever be a use case where an author chooses to define a font as source text in the url field?  We have some precedent for this in Script url and (sorta) PixelTexture.  Nevertheless font definitions
 are also convoluted and (perhaps notoriously) difficult to parse.  Of note is that WOFF2 specifically is designed for effective binary compression.  Our inclination so far is to not describe (or encourage) definition of the font within an X3D model.  YMMV
 (though we doubt it).  Much better authoring approach is to use any of many conversion tools that might credibly update a legacy font into WOFF2.</div>
</li></ul>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Thanks everyone for leaning forward on this, looking ahead to continuing discussion.</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)">
Have fun with font library collections for X3D models!  🙂</div>
<div id="m_-764152103705537030Signature">
<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_-764152103705537030appendonsend"></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 dir="ltr" id="m_-764152103705537030divRplyFwdMsg"><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" target="_blank">x3d-public-bounces@web3d.org</a>> on behalf of Brutzman, Donald (Don) (CIV) via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br>
<b>Sent:</b> Wednesday, February 26, 2025 5:39 PM<br>
<b>To:</b> X3D <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br>
<b>Cc:</b> Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</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;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Dick and I worked on suggested prose for X3D 4.1 with details continuing in Mantis 1490 below.</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)">
Review request:</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">X3D 4.1 Architecture (draft), 15 Text component, 15.4.1 FontStyle</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_-764152103705537030OWA5d78c725-7bf2-9d7a-b94a-9fe379177200" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#FontStyle</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)">
Improvements:</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">Include all <span style="background-color:rgb(255,255,0)">
X3DURLObject </span>fields,</div>
</li></ul>
<div style="direction:ltr;margin-left:40px;font-family:"Courier New",monospace;font-size:9pt;color:rgb(0,0,0)">
<span style="background-color:rgb(255,255,0)">  SFTime   [in,out] autoRefresh          0.0    [0,∞)</span></div>
<div style="direction:ltr;margin-left:40px;font-family:"Courier New",monospace;font-size:9pt;color:rgb(0,0,0)">
<span style="background-color:rgb(255,255,0)">  SFTime   [in,out] autoRefreshTimeLimit 3600.0 [0,∞)</span></div>
<div style="direction:ltr;margin-left:40px;font-family:"Courier New",monospace;font-size:9pt;color:rgb(0,0,0)">
<span style="background-color:rgb(255,255,0)">  SFString [in,out] description          ""</span></div>
<div style="direction:ltr;margin-left:40px;font-family:"Courier New",monospace;font-size:9pt;color:rgb(0,0,0)">
<span style="background-color:rgb(255,255,0)">  SFBool   [in,out] load                 TRUE</span></div>
<div style="direction:ltr;margin-left:40px;font-family:"Courier New",monospace;font-size:9pt;color:rgb(0,0,0)">
<span style="background-color:rgb(255,255,0)">  MFString [in,out] url                  []     [URI]</span></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">Decided to NOT overload functionality of <i>family </i>
field by adding file names (sorry Holger!  adjusting your implementation will likely be simple in comparison)</div>
<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">New prose:</div>
</li></ul>
<div style="direction:ltr;text-align:left;text-indent:0px;margin-top:1em;margin-bottom:1em;margin-left:40px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<span style="background-color:rgb(255,255,0)">The <i>url</i> field is optional and can refer to a relative or online address for a font library that contains one or more font definitions. An empty
<i>url</i> list indicates that the default set of fonts provided by the browser are used. If present, only the first active font library retrieved from the
<i>url</i> list shall be used. Individual font library files can be used by multiple FontStyle nodes in a scene. Each font file only needs to be loaded once per session.</span></div>
<div style="direction:ltr;text-align:left;text-indent:0px;margin-top:1em;margin-bottom:1em;margin-left:40px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<span style="background-color:rgb(255,255,0)">X3D browsers shall support WOFF (MIME type
<code>application/x-font-woff</code>) (see <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/references.html#W3C_WOFF" id="m_-764152103705537030OWA4509c300-f81e-b5fa-1600-c08749232fe1" target="_blank">
W3C WOFF File Format</a>). Support for the OpenType file format (MIME type <code>
application/x-font-opentype</code>) (see <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/bibliography.html#OPENTYPE" id="m_-764152103705537030OWA3a33c9e1-d77b-5c79-11d2-4316f660ce21" target="_blank">
OpenType Specification</a>) and TrueType file format (MIME type <code>application/x-font-truetype</code>) (see
<a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/references.html#I14496_22" id="m_-764152103705537030OWA88e57a80-03d8-ad30-e4f1-9dd28f47d893" target="_blank">
ISO/IEC 14496-22 Open Font Format</a>) is also recommended.</span></div>
<div style="direction:ltr;text-align:left;text-indent:0px;margin-top:1em;margin-bottom:1em;margin-left:40px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<span style="background-color:rgb(255,255,0)">Security, licensing, and copyright/usage permissions are handled via the exposure of a font file itself.</span></div>
<div style="direction:ltr;text-align:left;text-indent:0px;margin-top:1em;margin-bottom:1em;margin-left:40px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<span style="background-color:rgb(255,255,0)">Support for the <i>autoRefresh</i>,
<i>autoRefreshTimeLimit</i>, and <i>load</i> fields is optional.</span></div>
<div style="direction:ltr;text-align:left;text-indent:0px;margin-top:1em;margin-bottom:1em;margin-left:40px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<span style="background-color:rgb(255,255,0)">More details on the <i>autoRefresh</i>,
<i>autoRefreshTimeLimit</i>, <i>description</i>, <i>load</i>, and <i>url</i> fields are contained in
<a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/networking.html#URLs" id="m_-764152103705537030OWA1dc6a836-dcca-bada-7267-aee3f8c319b0" target="_blank">
9.2.1 URLs, URNs and URIs</a>.</span></div>
<div style="direction:ltr;text-align:left;text-indent:0px;margin-top:1em;margin-bottom:1em;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Looking it over, adding more functionality to FontStyle node seems to be unwise.  Dick has an excellent proposal:</div>
<div style="direction:ltr;text-align:left;text-indent:0px;margin-top:1em;margin-bottom:1em;margin-left:40px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<span style="background-color:rgb(128,255,255)">TODO alternative approach: move all new functionality into a separate
<b>FontLibrary</b> node to avoid complicating FontStyle further. This also offers the ability to succinctly load multiple font libraries in a given scene. The expense of defining a new node for X3D is offset by clearer distinction between X3D 4.0 and 4.1, also
 simplifying model content significantly. </span></div>
<div style="direction:ltr;text-align:left;text-indent:0px;margin-top:1em;margin-bottom:1em;margin-left:40px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<span style="background-color:rgb(128,255,255)">Feedback is welcome.</span></div>
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Leaving existing FontStyle implementations alone probably avoids many unintended side effects.  First law of engineering:  "If it ain't broke, don't fix it."</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)">
Thanks for all review.  It feels like we are finally converging on a straightforward approach to valuable future capabilities.</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)">
Have fun with X3D fonts!  😎</div>
<div id="m_-764152103705537030x_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_-764152103705537030x_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 id="m_-764152103705537030x_divRplyFwdMsg" dir="ltr"><span style="font-family:Calibri,sans-serif;font-size:11pt;color:rgb(0,0,0)"><b>From:</b> Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>><br>
<b>Sent:</b> Monday, February 24, 2025 9:32 AM<br>
<b>To:</b> X3D <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br>
<b>Cc:</b> Holger Seelig <<a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a>><br>
<b>Subject:</b> Re: [x3d-public] Open dyslexic and/or (unfortunately) comicsans fonts; draft X3D 4.1 prose for font files and libraries</span>
<div> </div>
</div>
<div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Wow, really super Holger!  🙂</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)">
There was a conversation about this on x3d-public a few years back... We committed to adding it in X3D 4.1 and (if I recall correctly) also noted that adding a url field might enable usage of larger font files.</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)">
I've attempted to capture this candidate specification change in a Mantis issue.  All review, feedback, and improvements are always welcome.</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">Mantis 1490 FontStyle handling of font files and font libraries</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://mantis.web3d.org/view.php?id=1490" id="m_-764152103705537030OWA20fcdcbe-1d43-f0f0-7570-f0d479a51108" target="_blank">https://mantis.web3d.org/view.php?id=1490</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)">
Description.</div>
<table style="direction:ltr;text-align:left;border-radius:0px;margin-bottom:0px;width:2529.4px;max-width:100%;color:rgb(57,57,57);box-sizing:border-box;border-collapse:collapse;border-spacing:0px">
<tbody>
<tr>
<td colspan="5" style="width:789.556px;height:366.95px;direction:ltr;text-align:left;line-height:1.42857;border-top:1px solid rgb(221,221,221);border-bottom:1px solid rgb(221,221,221);border-radius:0px;padding:5px;vertical-align:top;box-sizing:border-box">
<div style="direction:ltr;text-align:left;line-height:1.42857;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
A goal for X3D 4.1 is use of font files in FontStyle (see Mantis <span style="color:rgb(51,122,183)">
<a href="https://mantis.web3d.org/view.php?id=1464" id="m_-764152103705537030OWA3f0d81af-fca7-e71c-4d3b-c59df3f8c95e" title="[assigned] candidate features for X3D 4.1" style="color:rgb(51,122,183)" target="_blank">0001464</a></span>).<br>
<br>
Addition of individual-font files might be accomplished by listing the font file name in the FontStyle 'family' field.<br>
<br>
Referencing different fonts in a single combined font library file may require an additional field, for example 'url'. In general the use of a font library may be preferred, but repeatedly run-time retrieval of a font library is not desirable, since the file
 might be quite large and rarely changing. This might be noted in the specification prose, e.g.<br>
<br>
- "MFString [in,out] url [] [URI]"<br>
- "The family field may list a specific font file. A font listed in the family field may be provided by a corresponding font library."<br>
- "The url field may refer to a font library. Font libraries can be used by multiple FontStyle nodes in a scene and need only be loaded once per session."<br>
<br>
Support levels: add "Level 2, FontStyle, support for font files in family field and support for font libraries via url field ."<br>
<br>
Security, licensing, and copyright/usage issues are handled via the exposure of the font file itself. If retrievable (locally or online) then proper access is presumably handled separately.</div>
</td>
</tr>
</tbody>
</table>
<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)">
Additional information.</div>
<table style="direction:ltr;text-align:left;border-radius:0px;margin-bottom:0px;width:2529.4px;max-width:100%;color:rgb(57,57,57);box-sizing:border-box;border-collapse:collapse;border-spacing:0px">
<tbody>
<tr>
<td colspan="5" style="width:789.556px;height:199.35px;direction:ltr;text-align:left;line-height:1.42857;border-top:1px solid rgb(221,221,221);border-bottom:1px solid rgb(221,221,221);border-radius:0px;padding:5px;vertical-align:top;box-sizing:border-box">
<div style="direction:ltr;text-align:left;line-height:1.42857;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
- X3D 4.1 (draft) Architecture, 15 Text component, 15.4.1 FontStyle<br>
- <span style="color:rgb(51,122,183)"><a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#FontStyle" id="m_-764152103705537030OWAbf09468a-ea24-fcd8-848c-dfce47d78888" style="color:rgb(51,122,183)" target="_blank">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#FontStyle</a></span><br>
<br>
- X3D 4.1 (draft) Architecture, 15 Text component, 15.4.2 Text<br>
- <span style="color:rgb(51,122,183)"><a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#Text" id="m_-764152103705537030OWAd5f97e57-3ece-1ac7-af88-ee34ee47c8f3" style="color:rgb(51,122,183)" target="_blank">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#Text</a></span><br>
<br>
- X3D 4.1 (draft) Architecture, 15 Text component, 15.5 Support levels<br>
- <span style="color:rgb(51,122,183)"><a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#SupportlLevels" id="m_-764152103705537030OWA8d6f17d6-7453-6377-a5ca-4befff52156e" style="color:rgb(51,122,183)" target="_blank">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#SupportlLevels</a></span></div>
</td>
</tr>
</tbody>
</table>
<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)">
Have fun with X3D Text!   :)</div>
<div id="m_-764152103705537030x_x_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_-764152103705537030x_x_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 id="m_-764152103705537030x_x_divRplyFwdMsg" dir="ltr"><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" target="_blank">x3d-public-bounces@web3d.org</a>> on behalf of Holger Seelig via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br>
<b>Sent:</b> Monday, February 24, 2025 2:48 AM<br>
<b>To:</b> X3D <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br>
<b>Cc:</b> Holger Seelig <<a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a>><br>
<b>Subject:</b> Re: [x3d-public] Open dyslexic and/or (unfortunately) comicsans fonts</span>
<div> </div>
</div>
<div style="direction:ltr">With X_ITE you can use a URL in the family field of a FontStyle node to specify a path to a custom font file. Provided you have one of these fonts, it should be very easy:</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr"><?xml version="1.0" encoding="UTF-8"?></div>
<div style="direction:ltr"><!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 4.0//EN" "<a href="https://www.web3d.org/specifications/x3d-4.0.dtd" target="_blank">https://www.web3d.org/specifications/x3d-4.0.dtd</a>"></div>
<div style="direction:ltr"><X3D profile='Interchange' version='4.0' xmlns:xsd='<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>' xsd:noNamespaceSchemaLocation='<a href="https://www.web3d.org/specifications/x3d-4.0.xsd" target="_blank">https://www.web3d.org/specifications/x3d-4.0.xsd</a>'></div>
<div style="direction:ltr">  <head></div>
<div style="direction:ltr">    <component name='Text' level='1'/></div>
<div style="direction:ltr">  </head></div>
<div style="direction:ltr">  <Scene></div>
<div style="direction:ltr">    <Transform DEF='Text'></div>
<div style="direction:ltr">      <Shape></div>
<div style="direction:ltr">        <Appearance></div>
<div style="direction:ltr">          <Material/></div>
<div style="direction:ltr">        </Appearance></div>
<div style="direction:ltr">        <Text</div>
<div style="direction:ltr">            string='"3D Text"'></div>
<div style="direction:ltr">          <FontStyle</div>
<div style="direction:ltr">              family='"path/to/your/font.otf", "SERIF"'/></div>
<div style="direction:ltr">        </Text></div>
<div style="direction:ltr">      </Shape></div>
<div style="direction:ltr">    </Transform></div>
<div style="direction:ltr">  </Scene></div>
<div style="direction:ltr"></X3D></div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">Supported File Formats:</div>
<div style="direction:ltr"><a href="https://create3000.github.io/x_ite/components/text/fontstyle/#supported-file-formats" id="m_-764152103705537030OWA63ccce1b-d7b2-c787-cdac-770c63e97152" target="_blank">https://create3000.github.io/x_ite/components/text/fontstyle/#supported-file-formats</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;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" 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/" target="_blank">https://create3000.github.io/x_ite/</a></div>
<div style="direction:ltr"><br>
</div>
<blockquote>
<div style="direction:ltr">Am 24.02.2025 um 11:09 schrieb John Carlson via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>>:</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">If someone knows how change the fonts of the standards to OpenDyslexic or ComicSans, that might be a great accessibility experiment. _______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a></div>
</blockquote>
<div style="direction:ltr"><br>
</div>
</div>

_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</div></blockquote></div>