<div dir="ltr">Thanks, that looks great. I just wish there was a way to avoid 300kb of opentype.js and 300kb of wawoff2.js just to extract names. <div><br></div><div>The name table information embedded in the example woff2 file includes:</div><div><br></div><div><dl id="gmail-name-table-windows" style="margin-top:0px;padding-left:2em;color:rgb(112,112,112);font-family:Helvetica,arial,freesans,sans-serif;font-size:13px"><dt style="float:left;clear:both">fontFamily</dt><dd style="margin-left:12em;word-break:break-all;min-height:1.4em;max-height:100px;overflow-y:auto"><span class="gmail-langtag" style="font-size:11.05px;color:rgb(153,153,153)">en</span> <span class="gmail-langname" lang="en" style="padding-right:0.5em">Playwrite CA Guides</span></dd><dt style="float:left;clear:both">fontSubfamily</dt><dd style="margin-left:12em;word-break:break-all;min-height:1.4em;max-height:100px;overflow-y:auto"><span class="gmail-langtag" style="font-size:11.05px;color:rgb(153,153,153)">en</span> <span class="gmail-langname" lang="en" style="padding-right:0.5em">Regular</span></dd><dt style="float:left;clear:both">fullName</dt><dd style="margin-left:12em;word-break:break-all;min-height:1.4em;max-height:100px;overflow-y:auto"><span class="gmail-langtag" style="font-size:11.05px;color:rgb(153,153,153)">en</span> <span class="gmail-langname" lang="en" style="padding-right:0.5em">Playwrite CA Guides Regular</span></dd></dl><div>Which name should a x3d browser use for matching with FontStyle.family ? Best effort ? Ignore spaces, as common in file names ? That could lead to different interpretations. Why not avoid any ambiguity and follow CSS allowing authors to explicitly associate a font from a file with a FontStyle, as Holger originally proposed ?</div><div><br></div></div><div>Best, -Andreas</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Mar 2, 2025 at 7:21 AM Holger Seelig <<a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a>> wrote:<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>It seems I was wrong with my last email. <div><br></div><div>I created a reference implementation of FontLibrary node to test and play with.</div><div><br></div><div>It is available at:</div><div><a href="https://create3000.github.io/test/?url=https://gist.githubusercontent.com/create3000/6d3992dea7e641bb59645684ca468ce7/raw/a63e66e23b305478fbfdee9e67d7db9cad1f8e72/FontLibrary.x3dv" target="_blank">https://create3000.github.io/test/?url=https://gist.githubusercontent.com/create3000/6d3992dea7e641bb59645684ca468ce7/raw/a63e66e23b305478fbfdee9e67d7db9cad1f8e72/FontLibrary.x3dv</a></div><div><br></div><div>Best regards,</div><div>Holger</div><div><br id="m_607060367618375571m_-4637395750887035118lineBreakAtBeginningOfMessage"><div>
<div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="text-align:start;text-indent:0px"><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">--</div><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">Holger Seelig</div><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">Leipzig, Germany</div><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><br></div><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a></div><div><a href="https://create3000.github.io/x_ite/" target="_blank">https://create3000.github.io/x_ite/</a></div></div></div></div></div></div></div>
</div>
<div><br><blockquote type="cite"><div>Am 02.03.2025 um 05:26 schrieb Andreas Plesch via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>>:</div><br><div><div dir="ltr" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Ok, I think these explanations make the intention very clear.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Mar 1, 2025 at 3:29 PM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> wrote:<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">Thanks for careful scrutiny and questions. Overall responses:</div><ol start="1" style="list-style-type:lower-alpha"><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div>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></div></div></blockquote><div>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" target="_blank">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/concepts.html#Rootnodes</a></div><div>So it could be a ChildNode or another class of root nodes.</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"><ol start="1" style="list-style-type:lower-alpha"><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div><br></div></div></li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div>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></div></div></blockquote><div>This would clearly associate a font with an individual FontStyle and avoid mistakes.</div><div>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 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"><ol start="1" style="list-style-type:lower-alpha"><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div><br></div></div></li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div>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></div></div></blockquote><div>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><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"><ol start="1" style="list-style-type:lower-alpha"><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div><br></div></div></li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div>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></div></div></blockquote><div> </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"><ol start="1" style="list-style-type:lower-alpha"><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div><br></div></div></li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div>Having url and run-time capabilities means that FontLibrary would be an X3D node, not an X3D statement.</div></li></ol></div></blockquote><div>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 class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><ol start="1" style="list-style-type:lower-alpha"><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div><br></div></div></li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div>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="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">See<span> </span><b><i>response</i></b><i><span> </span></i>paragraphs inserted below for specific replies.</div><div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><br></div></div></blockquote><div><br></div><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 style="direction:ltr;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></div></blockquote><div><br></div></div><div>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>Don's example scene is actually a victim of this potential for confusion. The family name <span style="font-family:"Courier New",monospace;font-size:12px;white-space:pre-wrap;background-color:rgb(255,255,0)">Playwright_CA_</span><span style="font-family:"Courier New",monospace;font-size:12px;white-space:pre-wrap;background-color:rgb(255,255,0)">Guides </span>is in reality not the same name as given in the woff2 file. I think it is <span style="font-family:"Courier New",monospace;font-size:12px;white-space:pre-wrap;background-color:rgb(255,255,0)">Playwright CA </span><span style="font-family:"Courier New",monospace;font-size:12px;white-space:pre-wrap;background-color:rgb(255,255,0)">Guides.</span> I may be responsible for this since I used it in an example but it shows how quickly this can go wrong.</div><div>The solution in CSS is to allow authors to define their own family name for the font given in the font file.</div><div>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>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><br></div><div>So please consider adding a SFString FontLibrary.family field to FontLibrary.</div><div><br></div><div>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><br></div><div>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><br></div><div>"<span style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px;background-color:rgb(255,255,0)">An empty </span><i style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px;background-color:rgb(255,255,0)">url</i><span style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px;background-color:rgb(255,255,0)"> list indicates that the default set of fonts provided by the browser are used."</span></div><div><br></div><div>The url field always exists but can be empty. So <span style="background-color:rgb(255,255,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px">is optional and</span><span style="background-color:rgb(255,255,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px"> </span>could be removed.</div><div>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><br></div><div>Andreas</div><div><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 style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"></div><div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt">P.S. Interesting reference</div><ul style="list-style-type:disc"><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div>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><a href="https://fonts.google.com/knowledge/using_type_in_ar_and_vr" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277LPlnk" target="_blank">https://fonts.google.com/knowledge/using_type_in_ar_and_vr</a></div><div><br></div></li></ul><div id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277Signature"><div 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></div><div style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">--</span></div><div 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 <span> </span><a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a></span></div><div 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></div><div 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<span> </span><a href="https://faculty.nps.edu/brutzman" target="_blank">https://faculty.nps.edu/brutzman</a></span></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_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277appendonsend"></div><div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><br></div><hr style="display:inline-block;width:1012.06px"><div dir="ltr" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277divRplyFwdMsg"><span style="font-family:Calibri,sans-serif;font-size:11pt"><b>From:</b> x3d-public <<a href="mailto:x3d-public-bounces@web3d.org" target="_blank">x3d-public-bounces@web3d.org</a>> on behalf of Andreas Plesch via x3d-public <<a href="mailto:x3d-public@web3d.org" 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" target="_blank">x3d-public@web3d.org</a>><br><b>Cc:</b> Andreas Plesch <<a href="mailto:andreasplesch@gmail.com" 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">I basically had the same questions as Michalis.</div><div style="direction:ltr"><br></div><div style="direction:ltr">Comments below.</div><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">Date: Sat, 1 Mar 2025 05:52:24 +0100<br>From: Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAf17e0c40-5d8a-9c89-5665-a83324ae1a14" 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_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAe65a919c-357e-535a-c0e1-9999985917c0" 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"><br></div><div style="direction:ltr">This is a big missing piece.</div><div style="direction:ltr">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">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">Another option is to make it part of WorldInfo as a value for a new WorldInfo.fonts field ?</div><div style="direction:ltr">The idea came up as an alternative to a FontStyle.url field, so see below.</div><div style="direction:ltr"> </div><div style="direction:ltr;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><span> </span></i></span><span style="font-size:11pt">See above.</span></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">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"><br></div><div style="direction:ltr">What is 'active' ? Probably accessible</div><div style="direction:ltr"><br></div><div style="direction:ltr">"Used": ?</div><div style="direction:ltr"><br></div><div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><b><i>response:<span> </span></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;list-style-type:disc"><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><div style="direction:ltr">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">"<span style="background-color:rgb(255,255,0)">All<span> </span><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;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_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277LPlnk" 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><div id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277LPBorder_GTaHR0cHM6Ly93d3cud2ViM2Qub3JnL3NwZWNpZmljYXRpb25zL1gzRHY0RHJhZnQvSVNPLUlFQzE5Nzc1LTF2NC4xLUNELy9QYXJ0MDEvY29tcG9uZW50cy9uZXR3b3JraW5nLmh0bWwjWDNEVXJsT2JqZWN0" style="width:800px;margin-top:16px;margin-bottom:16px;max-width:800px;min-width:424px"><table id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277LPContainer995060" role="presentation" style="padding:12px 36px 12px 12px;width:800px;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:744px"><div id="m_607060367618375571m_-4637395750887035118m_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 id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277LPUrlAnchor995060" href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/networking.html#X3DUrlObject" style="text-decoration:none" target="_blank">X3D Architecture 4.1 draft — ISO/IEC 19775-1:202x — 9 Networking component</a></div><div id="m_607060367618375571m_-4637395750887035118m_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_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277LPMetadata995060" 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><blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)"><div style="direction:ltr">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"><br></div><div style="direction:ltr">That was my first thought as well but see above.</div><div style="direction:ltr">A simple way to make a FontLibrary url available to multiple FontStyle nodes is by DEF/USE.</div><div style="direction:ltr">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">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"><br></div><div style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><b><i>response</i>:<span> </span></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;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><br></div><div style="direction:ltr;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> <span> </span></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></div></blockquote><div><br></div><div> </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 style="direction:ltr;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><br></div><div style="direction:ltr;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">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"><br></div><div style="direction:ltr">Including edge cases if possible.</div><div style="direction:ltr;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="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="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_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA48f35029-99ac-af36-e3fa-0558716feb58" 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" target="_blank">https://fonts.gstatic.com/s/playwritecaguides/v1/MjQamj1kuP_soQ3o-rysO9Ci_8oJlIUUInI.woff2</a>"]
}
Shape {
# ☺ = ☺ smiley face emoticon, and "" means skip a line
geometry Text {
string [ "Have fun" "with X3D!" "" ":) ☺" ]
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"><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">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"><br></div><div style="direction:ltr">One advantage of a FontLibrary (or perhaps just 'Font') node would be DEF/USE.</div><div style="direction:ltr"><br></div><div style="direction:ltr">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;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt"><br></div><div style="direction:ltr">Regards, -Andreas</div><div style="direction:ltr"><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:<span> </span></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"><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"><br>pt., 28 lut 2025 o 19:56 Brutzman, Donald (Don) (CIV) via x3d-public <<br><a href="mailto:x3d-public@web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA8c6a6d70-a323-6dc8-fcd1-99df37f739a2" target="_blank">x3d-public@web3d.org</a>> napisa?(a):<br><br>> Thanks everyone for responses, implementation improvements, technical<br>> details, and many insights.<br>><br>> First positive takeaway: WOFF File Format 2.0 is the clear preference to<br>> WOFF 1.0.<br>><br>> WOFF File Format 2.0, W3C Recommendation, 08 August 2024<br>><br>> - "Abstract. Based on experience with WOFF 1.0, which is widely<br>> deployed, this specification was developed to provide improved compression<br>> and thus lower use of network bandwidth, while still allowing fast<br>> decompression even on mobile devices. This is achieved by combining a<br>> content-aware preprocessing step and improved entropy coding, compared to<br>> the Flate compression used in WOFF 1.0."<br>> -<span> </span><a href="https://www.w3.org/TR/WOFF2" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA312c11d4-0b7d-d787-9e1d-8157ba5ebe6f" target="_blank">https://www.w3.org/TR/WOFF2</a><br>><br>> Clearly, from recent excellent emails, there are many implementer-specific<br>> issues and interactions when adding font files that are good to know about,<br>> but don't necessarily need to be expressed in an X3D model (or the X3D<br>> Architecture specification).<br>><br>> Dick and I worked further today to assess whether separation of font files<br>> from FontStyle node into a FontLibrary node was the preferred to represent<br>> this information in an X3D model. We also repeated WOFF Recommendation's<br>> use of term "collection" as part of a *FontLibrary *definition.<br>><br>> - The FontLibrary node specifies a collection of one or more font<br>> family definitions. A font family may include one or more related font<br>> style definitions. FontLibrary provides the ability to selectively load<br>> font files for use by FontStyle<br>> <<a href="https://outlook.office.com/mail/id/AAkALgAAAAAAHYQDEapmEc2byACqAC%2FEWg0AN5ikByHYYkeveIfklhUi1gAG%2Blh21AAA?nativeVersion=1.2025.219.400#FontStyle" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAecbec85b-5f09-7944-65c9-728a0aa77a46" target="_blank">https://outlook.office.com/mail/id/AAkALgAAAAAAHYQDEapmEc2byACqAC%2FEWg0AN5ikByHYYkeveIfklhUi1gAG%2Blh21AAA?nativeVersion=1.2025.219.400#FontStyle</a>> and<br>> ScreenFontStyle<br>> <<a href="https://outlook.office.com/mail/id/layout.html#ScreenFontStyle" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA4d9961c5-08e6-48ed-cdcd-165183ac4ca5" target="_blank">https://outlook.office.com/mail/id/layout.html#ScreenFontStyle</a>> nodes.<br>><br>> FontLibrary node pros (meaning separation of font files from FontStyle<br>> node):<br>><br>> - Keeps existing (and fairly complex) FontStyle implementations<br>> unchanged<br>> - Separation of loading and presentation functionality between two<br>> nodes<br>> - FontLibrary simply adds to the selection of fonts available, and<br>> retains emphasis of *family *and *style *fields within a given<br>> FontStyle node.<br>> - If separate font files redefine a given family (with the same name),<br>> then addition of *enabled *field might allow authors to determine<br>> which of them is relevant. However *enabled *field can be considered<br>> redundant (since changing url has same effect).<br>> - Alternative approach to use of an *enabled *field, we might also<br>> need to add a sentence such as<br>> - "If a font family is redefined by multiple FontLibrary nodes, then<br>> the first defined family is used."<br>> - (or we can remain silent and let browser implementations sort<br>> that out)<br>><br>> FontLibrary node cons (meaning bundle all url functionality in FontStyle):<br>><br>> - Closer coupling of *family *field and font files themselves, recent<br>> email dialog indicates that sometimes the font file simply overrides the<br>> family field...<br>> - We do not want to change any defined functionality for *family* and *style<br>> *fields, they still seem correct in X3D Architecture and no suitable<br>> changes yet seen.<br>> - No need for *enabled *field.<br>><br>> Our current opinion is that FontLibrary provides a superior approach to<br>> continued growth of FontStyle node. To facilitate comparison and review,<br>> current draft has proposed FontLibrary prose in yellow, and alternate<br>> (not accepted) FontStyle alternative in cyan.<br>><br>> - X3D 4.1 (draft) Architecture, clause 15 Text component, 15.4.1<br>> FontLibrary<br>> -<br>> <span> </span><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/text.html#FontLibrary" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA2bc73fe4-2d6b-f9d1-1eea-64f07ed78363" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/text.html#FontLibrary</a><br>> X3D Architecture 4.1 draft ? ISO/IEC 19775-1:202x ? 15 Text component<br>> <<a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/text.html#FontLibrary" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA095a604f-20c9-bae2-483f-5199cde47024" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/text.html#FontLibrary</a>><br>> 15.2.2.4 Language. The language field specifies the context of the<br>> language for the text string in the form of a language and a country in<br>> which that language is used. Both the language and the country are<br>> specified using the language tags defined in which may specify only a<br>> country (using the three-character codes defined in ISO 3166) or both a<br>> language (using the two-character codes ...<br>> <span> </span><a href="http://www.web3d.org/" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAbccc43d1-cdae-1a5c-f099-63ec2ff4029e" target="_blank">www.web3d.org</a><br>><br>><br>> Additional questions to ponder, further insights welcome:<br>><br>> - Our impression of the term 'webfont' is that it is simply a generic<br>> term, not a standard or specification per se, and often employed to<br>> reference WOFF. Is that correct?<br>><br>> - Font files tend to be large. Might there ever be a use case where<br>> an author chooses to define a font as source text in the url field? We<br>> have some precedent for this in Script url and (sorta) PixelTexture.<br>> Nevertheless font definitions are also convoluted and (perhaps notoriously)<br>> difficult to parse. Of note is that WOFF2 specifically is designed for<br>> effective binary compression. Our inclination so far is to not describe<br>> (or encourage) definition of the font within an X3D model. YMMV (though we<br>> doubt it). Much better authoring approach is to use any of many conversion<br>> tools that might credibly update a legacy font into WOFF2.<br>><br>> Thanks everyone for leaning forward on this, looking ahead to continuing<br>> discussion.<br>><br>> Have fun with font library collections for X3D models! ?<br>><br>><br>> all the best, Don<br>><br>> --<br>><br>> Don Brutzman Naval Postgraduate School, Code USW/Br<br>><span> </span><a href="mailto:brutzman@nps.edu" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAc6618bf7-ec55-c789-9ee7-829648b703b3" target="_blank">brutzman@nps.edu</a><br>><br>> Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA<br>> +1.831.656.2149<br>><br>> X3D graphics, virtual worlds, navy robotics<br>><span> </span><a href="https://faculty.nps.edu/brutzman" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAd1e05fb8-1dd8-6d60-1944-b22b39f70e48" target="_blank">https://faculty.nps.edu/brutzman</a><br>><br>><br>><br>> ------------------------------<br>> *From:* x3d-public <<a href="mailto:x3d-public-bounces@web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAc6c07e83-5567-d274-9542-8b7569e6e88a" target="_blank">x3d-public-bounces@web3d.org</a>> on behalf of Brutzman,<br>> Donald (Don) (CIV) via x3d-public <<a href="mailto:x3d-public@web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA058f7306-22b0-52f1-4314-ceee3a82d563" target="_blank">x3d-public@web3d.org</a>><br>> *Sent:* Wednesday, February 26, 2025 5:39 PM<br>> *To:* X3D <<a href="mailto:x3d-public@web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAb525154b-c01b-2c5d-bcb2-0c9caf674e41" target="_blank">x3d-public@web3d.org</a>><br>> *Cc:* Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA5b3c4334-6940-8fba-7d3e-82ec0b1d03d7" target="_blank">brutzman@nps.edu</a>><br>> *Subject:* Re: [x3d-public] draft X3D 4.1 prose for font files and<br>> libraries<br>><br>> Dick and I worked on suggested prose for X3D 4.1 with details continuing<br>> in Mantis 1490 below.<br>><br>> Review request:<br>><br>> - X3D 4.1 Architecture (draft), 15 Text component, 15.4.1 FontStyle<br>> -<br>> <span> </span><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#FontStyle" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA51016652-79b2-2680-7581-ae1e39a0514a" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#FontStyle</a><br>><br>> Improvements:<br>><br>> - Include all X3DURLObject fields,<br>><br>> SFTime [in,out] autoRefresh 0.0 [0,?)<br>> SFTime [in,out] autoRefreshTimeLimit 3600.0 [0,?)<br>> SFString [in,out] description ""<br>> SFBool [in,out] load TRUE<br>> MFString [in,out] url [] [URI]<br>><br>> - Decided to NOT overload functionality of *family * field by adding<br>> file names (sorry Holger! adjusting your implementation will likely be<br>> simple in comparison)<br>><br>> - New prose:<br>><br>> The *url* field is optional and can refer to a relative or online address<br>> for a font library that contains one or more font definitions. An empty<br>> *url* list indicates that the default set of fonts provided by the<br>> browser are used. If present, only the first active font library retrieved<br>> from the *url* list shall be used. Individual font library files can be<br>> used by multiple FontStyle nodes in a scene. Each font file only needs to<br>> be loaded once per session.<br>> X3D browsers shall support WOFF (MIME type application/x-font-woff) (see W3C<br>> WOFF File Format<br>> <<a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/references.html#W3C_WOFF" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA23fb23c9-3f93-9647-c8b7-ee0d6cd863c9" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/references.html#W3C_WOFF</a>>).<br>> Support for the OpenType file format (MIME type<br>> application/x-font-opentype) (see OpenType Specification<br>> <<a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/bibliography.html#OPENTYPE" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAe6172159-402f-aeb5-77f7-492526018749" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/bibliography.html#OPENTYPE</a>>)<br>> and TrueType file format (MIME type application/x-font-truetype) (see ISO/IEC<br>> 14496-22 Open Font Format<br>> <<a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/references.html#I14496_22" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA9b7a8916-5e5d-c894-7ea5-10df69ef6ecc" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/references.html#I14496_22</a>>)<br>> is also recommended.<br>> Security, licensing, and copyright/usage permissions are handled via the<br>> exposure of a font file itself.<br>> Support for the *autoRefresh*, *autoRefreshTimeLimit*, and *load* fields is<br>> optional.<br>> More details on the *autoRefresh*, *autoRefreshTimeLimit*, *description*,<br>> *load*, and *url* fields are contained in 9.2.1 URLs, URNs and URIs<br>> <<a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/networking.html#URLs" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAcc072e78-eea8-8137-702a-87478dfdd81d" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/networking.html#URLs</a>><br>> .<br>> Looking it over, adding more functionality to FontStyle node seems to be<br>> unwise. Dick has an excellent proposal:<br>> TODO alternative approach: move all new functionality into a separate<br>> *FontLibrary* node to avoid complicating FontStyle further. This also<br>> offers the ability to succinctly load multiple font libraries in a given<br>> scene. The expense of defining a new node for X3D is offset by clearer<br>> distinction between X3D 4.0 and 4.1, also simplifying model content<br>> significantly.<br>> Feedback is welcome.<br>> Leaving existing FontStyle implementations alone probably avoids many<br>> unintended side effects. First law of engineering: "If it ain't broke,<br>> don't fix it."<br>><br>> Thanks for all review. It feels like we are finally converging on a<br>> straightforward approach to valuable future capabilities.<br>><br>> Have fun with X3D fonts! ?<br>><br>><br>> all the best, Don<br>><br>> --<br>><br>> Don Brutzman Naval Postgraduate School, Code USW/Br<br>><span> </span><a href="mailto:brutzman@nps.edu" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAd6997fca-3128-09cd-3017-6f8025425f1a" target="_blank">brutzman@nps.edu</a><br>><br>> Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA<br>> +1.831.656.2149<br>><br>> X3D graphics, virtual worlds, navy robotics<br>><span> </span><a href="https://faculty.nps.edu/brutzman" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAfcfec38c-be42-b577-9889-27e6ad6bf6f7" target="_blank">https://faculty.nps.edu/brutzman</a><br>><br>><br>><br>> ------------------------------<br>> *From:* Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA43a4ca61-0500-a0a7-3878-693b42a7af2b" target="_blank">brutzman@nps.edu</a>><br>> *Sent:* Monday, February 24, 2025 9:32 AM<br>> *To:* X3D <<a href="mailto:x3d-public@web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAed2eccaf-2305-dd0d-348c-6e86aa8a4689" target="_blank">x3d-public@web3d.org</a>><br>> *Cc:* Holger Seelig <<a href="mailto:holger.seelig@yahoo.de" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA581a4113-44fd-f54a-e700-0ba98656681a" target="_blank">holger.seelig@yahoo.de</a>><br>> *Subject:* Re: [x3d-public] Open dyslexic and/or (unfortunately)<br>> comicsans fonts; draft X3D 4.1 prose for font files and libraries<br>><br>> Wow, really super Holger! ?<br>><br>> There was a conversation about this on x3d-public a few years back... We<br>> committed to adding it in X3D 4.1 and (if I recall correctly) also noted<br>> that adding a url field might enable usage of larger font files.<br>><br>> I've attempted to capture this candidate specification change in a Mantis<br>> issue. All review, feedback, and improvements are always welcome.<br>><br>> - Mantis 1490 FontStyle handling of font files and font libraries<br>> -<span> </span><a href="https://mantis.web3d.org/view.php?id=1490" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAffce97f5-d123-64c7-ba08-52146ae4215a" target="_blank">https://mantis.web3d.org/view.php?id=1490</a><br>><br>> Description.<br>> A goal for X3D 4.1 is use of font files in FontStyle (see Mantis 0001464<br>> <<a href="https://mantis.web3d.org/view.php?id=1464" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA0cfcdd14-5b32-5c26-a6ce-8bcba76bbd05" target="_blank">https://mantis.web3d.org/view.php?id=1464</a>>).<br>><br>> Addition of individual-font files might be accomplished by listing the<br>> font file name in the FontStyle 'family' field.<br>><br>> Referencing different fonts in a single combined font library file may<br>> require an additional field, for example 'url'. In general the use of a<br>> font library may be preferred, but repeatedly run-time retrieval of a font<br>> library is not desirable, since the file might be quite large and rarely<br>> 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<br>> 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<br>> by multiple FontStyle nodes in a scene and need only be loaded once per<br>> session."<br>><br>> Support levels: add "Level 2, FontStyle, support for font files in family<br>> field and support for font libraries via url field ."<br>><br>> Security, licensing, and copyright/usage issues are handled via the<br>> exposure of the font file itself. If retrievable (locally or online) then<br>> proper access is presumably handled separately.<br>><br>> Additional information.<br>> - X3D 4.1 (draft) Architecture, 15 Text component, 15.4.1 FontStyle<br>> -<br>><span> </span><a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#FontStyle" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA5144fb80-5f0f-2d1b-2c7c-c841f4dfb48d" target="_blank">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#FontStyle</a><br>><br>> - X3D 4.1 (draft) Architecture, 15 Text component, 15.4.2 Text<br>> -<br>><span> </span><a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#Text" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA258f378b-fb6a-a1bb-2e12-2be7f1b42fc5" target="_blank">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#Text</a><br>><br>> - X3D 4.1 (draft) Architecture, 15 Text component, 15.5 Support levels<br>> -<br>><span> </span><a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#SupportlLevels" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA56d1bb8c-9ac1-96d3-8ba8-873593f01256" target="_blank">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#SupportlLevels</a><br>><br>> Have fun with X3D Text! :)<br>><br>><br>> all the best, Don<br>><br>> --<br>><br>> Don Brutzman Naval Postgraduate School, Code USW/Br<br>><span> </span><a href="mailto:brutzman@nps.edu" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA410d5465-8ef7-2d1b-cd57-ac48628aa6af" target="_blank">brutzman@nps.edu</a><br>><br>> Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA<br>> +1.831.656.2149<br>><br>> X3D graphics, virtual worlds, navy robotics<br>><span> </span><a href="https://faculty.nps.edu/brutzman" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA25d038c8-3f1f-5c5f-adb3-56cd8c08d9ff" target="_blank">https://faculty.nps.edu/brutzman</a><br>><br>><br>><br>> ------------------------------<br>> *From:* x3d-public <<a href="mailto:x3d-public-bounces@web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAd767fd3e-e831-b711-e409-8f18168e1075" target="_blank">x3d-public-bounces@web3d.org</a>> on behalf of Holger<br>> Seelig via x3d-public <<a href="mailto:x3d-public@web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA5449d1a1-06ee-6220-2754-d2bf14e25d0c" target="_blank">x3d-public@web3d.org</a>><br>> *Sent:* Monday, February 24, 2025 2:48 AM<br>> *To:* X3D <<a href="mailto:x3d-public@web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA46379a74-5d58-70d3-d77f-0160dc302c86" target="_blank">x3d-public@web3d.org</a>><br>> *Cc:* Holger Seelig <<a href="mailto:holger.seelig@yahoo.de" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA0edd1519-c5ea-84f7-b253-0b79cc607a6f" target="_blank">holger.seelig@yahoo.de</a>><br>> *Subject:* Re: [x3d-public] Open dyslexic and/or (unfortunately)<br>> comicsans fonts<br>><br>> With X_ITE you can use a URL in the family field of a FontStyle node to<br>> specify a path to a custom font file. Provided you have one of these fonts,<br>> it should be very easy:<br>><br>> <?xml version="1.0" encoding="UTF-8"?><br>> <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 4.0//EN" "<br>><span> </span><a href="https://www.web3d.org/specifications/x3d-4.0.dtd" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA30cb466e-89d4-f4db-b11b-7dee074667f7" target="_blank">https://www.web3d.org/specifications/x3d-4.0.dtd</a>"><br>> <X3D profile='Interchange' version='4.0' xmlns:xsd='<br>><span> </span><a href="http://www.w3.org/2001/XMLSchema-instance" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA8ad84912-45ee-35aa-1940-914eabf13180" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>' xsd:noNamespaceSchemaLocation='<br>><span> </span><a href="https://www.web3d.org/specifications/x3d-4.0.xsd" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA6e4af409-7762-492b-b36a-16f9bfde3143" target="_blank">https://www.web3d.org/specifications/x3d-4.0.xsd</a>'><br>> <head><br>> <component name='Text' level='1'/><br>> </head><br>> <Scene><br>> <Transform DEF='Text'><br>> <Shape><br>> <Appearance><br>> <Material/><br>> </Appearance><br>> <Text<br>> string='"3D Text"'><br>> <FontStyle<br>> family='"path/to/your/font.otf", "SERIF"'/><br>> </Text><br>> </Shape><br>> </Transform><br>> </Scene><br>> </X3D><br>><br>> Supported File Formats:<br>><br>><span> </span><a href="https://create3000.github.io/x_ite/components/text/fontstyle/#supported-file-formats" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA5aa4f3a5-e049-79a1-02a8-68ac39c1b902" target="_blank">https://create3000.github.io/x_ite/components/text/fontstyle/#supported-file-formats</a><br>><br>> Best regards,<br>> Holger<br>><br>> --<br>> Holger Seelig<br>> Leipzig, Germany<br>><br>><span> </span><a href="mailto:holger.seelig@yahoo.de" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA15738299-e18c-9f8f-5021-d80ac9ac5498" target="_blank">holger.seelig@yahoo.de</a><br>><span> </span><a href="https://create3000.github.io/x_ite/" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA526c2fcb-dd5d-9c43-8a99-8dd817ee16e3" target="_blank">https://create3000.github.io/x_ite/</a><br>><br>> Am 24.02.2025 um 11:09 schrieb John Carlson via x3d-public <<br>><span> </span><a href="mailto:x3d-public@web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA3e063c77-d5df-9a99-52ca-4ef399934cc8" target="_blank">x3d-public@web3d.org</a>>:<br>><br>> If someone knows how change the fonts of the standards to OpenDyslexic or<br>> ComicSans, that might be a great accessibility experiment.<br>> _______________________________________________<br>> x3d-public mailing list<br>><span> </span><a href="mailto:x3d-public@web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAb80f7910-7f2b-5248-bdd3-63387162af6b" target="_blank">x3d-public@web3d.org</a><br>><span> </span><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA22e0164b-84db-5d1a-ac52-0e95e558ca6c" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>><br>><br>> _______________________________________________<br>> x3d-public mailing list<br>><span> </span><a href="mailto:x3d-public@web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA4a888d44-a4c2-6a11-a3a5-567b6c93c5f8" target="_blank">x3d-public@web3d.org</a><br>><span> </span><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWAef24f643-68c4-785e-4a76-413fb6d0692f" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>><br>-------------- next part --------------<br>An HTML attachment was scrubbed...<br>URL: <<a href="http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250301/db01b350/attachment.html" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA197e8250-1ebd-12fa-0585-91697a548d96" target="_blank">http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250301/db01b350/attachment.html</a>><br><br>------------------------------<br><br>Subject: Digest Footer<br><br>_______________________________________________<br>x3d-public mailing list<br><a href="mailto:x3d-public@web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA77ff57bb-925d-b022-e284-167d607c995a" target="_blank">x3d-public@web3d.org</a><br><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" id="m_607060367618375571m_-4637395750887035118m_2067727400233377551m_-4261266178185106240m_274737231540115018m_1080745313724731277OWA62f33efb-6cc2-0261-8e20-7a4fc720d919" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br><br><br>------------------------------<br><br>End of x3d-public Digest, Vol 191, Issue 133<br>********************************************</div></blockquote><div style="direction:ltr"><br></div><div style="direction:ltr"><br></div><div style="direction:ltr">--</div><div style="direction:ltr">Andreas Plesch<br>Waltham, MA 02453</div></div></blockquote></div><div><br clear="all"></div><div><br></div><span class="gmail_signature_prefix">--<span> </span></span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Andreas Plesch<br>Waltham, MA 02453</div></div></div></div></div></div></div><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline">_______________________________________________</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline">x3d-public mailing list</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><a href="mailto:x3d-public@web3d.org" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">x3d-public@web3d.org</a><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a></div></blockquote></div><br></div></div></blockquote></div><div><br clear="all"></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Andreas Plesch<br>Waltham, MA 02453</div></div></div>