<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div>Synthezising font styles is usually not an option for people interested in typography. A font usually comes in different styles, which are finely worked out and usually contain special features that cannot be achieved by synthesising, i.e. they usually look bad, but often are perfectly suitable for manually creating a new style from them.</div><div><br></div><div>FontStyle node with url is a good idea and also easy to implement. I think it is enough to load one font:</div><div><br></div><div>FontStyle { </div><div> url<span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);"> </span><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">"DejaVuSerif-Italic.ttf"</span></div><div> <span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">style "BOLD"</span></div><div>}</div><div><br></div><div>that's simple and is actually enough, otherwise it gets more complicated, and as Michalis already said the style doesn't matter in this case.</div><div><br></div><div>Best regards,</div><div>Holger</div><div><br></div><div>
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="text-align: start; text-indent: 0px; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">--</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">Holger Seelig</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">Leipzig, Germany</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;"><br></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">holger.seelig@yahoo.de</div><div>https://create3000.github.io/x_ite/</div></div></div></div></div></div></div>
</div>
<div><br><blockquote type="cite"><div>Am 27.02.2025 um 04:41 schrieb Michalis Kamburelis via x3d-public <x3d-public@web3d.org>:</div><br class="Apple-interchange-newline"><div><div dir="ltr"><div>Nice, I see the core addition here is adding "url" to the "FontStyle", which can point to a font file (like WOFF, TTF, OTF). This makes perfect sense and should be easy to implement and useful for authors. The prose makes it clear that only *one* item from the "FontStyle.url" list is used, which is standard in X3D usage of "MFString url", good.</div><div><br></div><div>Some feedback:</div><div><br></div><div>1. The text uses new terms: "font definition", "font library". I would advise to clearly define (and give examples) what is meant by each term (and maybe you don't really need all of them?). As always, testcase files would be great :)</div><div><br></div><div> Admittedly, I don't fully understand myself what do you mean by "font definition", "font library". The terms I know, when working with fonts, are :</div><div><br></div><div> A. "font file" (this is a single WOFF, TTF, OTF file). </div><div><br></div><div> B. And "font family" (this is usually using 4 files, regular / italic / bold+italic / bold). </div><div><br></div><div> In CGE, this is TCastleFontFamily component, corresponds to <a href="https://castle-engine.io/apidoc/html/CastleFonts.TCastleFontFamily.html" target="_blank">https://castle-engine.io/apidoc/html/CastleFonts.TCastleFontFamily.html</a> . </div><div><br></div><div> In CSS, this is called font-family. See e.g. <a href="https://stackoverflow.com/questions/12812441/how-do-i-use-woff-fonts-for-my-website" target="_blank">https://stackoverflow.com/questions/12812441/how-do-i-use-woff-fonts-for-my-website</a> how to use 4 WOFF files to define a CSS font-family.</div><div><br></div><div> In X3D itself, the "FontStyle.family" also allows to choose from (system-level or browser-level) font families. So it's all good and consistent so far.</div><div><br></div><div> Admittedly, I'm unsure how/if do my above terms map to "font library" and "font definition" terms that the spec on <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#FontStyle" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#FontStyle</a> uses. The spec mentions "a font library that contains one or more font definitions". Can you show me (point to concrete testcases) what do you mean? What is a simple file that is "a font library with one font definition"? What is a simple file that is "a font library with multiple font definitions"? <br></div><div><br></div><div>2. It may be worth saying explicitly in the prose that:</div><div><br></div><div> - When some font file indicated by "url" is successfully loaded, then the "FontStyle.family" no longer maters. The font is defined by the given URL.</div><div><br></div><div> - When some font file indicated by "url" is successfully loaded (and it only contains a single font definition?) then the "FontStyle.style" (bold, italic..) also doesn't matter. <br></div><div><br></div><div> That is, consider this:</div><div><br></div><div> FontStyle { url "DejaVuSerif-Italic.ttf" }</div><div><br></div><div> DejaVu is an open-source font, distributed also by Debian, and used by CGE, you can experiment with files on <a href="https://github.com/castle-engine/castle-engine/tree/master/src/fonts/data" target="_blank">https://github.com/castle-engine/castle-engine/tree/master/src/fonts/data</a> .</div><div><br></div><div> ... then the "style" doesn't matter. That is, in this example:</div><div><br></div><div> FontStyle { </div><div> url "DejaVuSerif-Italic.ttf" <br></div><div> style "BOLD"</div><div> }</div><div><br></div><div> ... the style "BOLD" value is ignored. Because you use "DejaVuSerif-Italic.ttf", so this is italic (and not bold) version of DejaVu. If someone wants bold, they should have used "DejaVuSerif-Bold.ttf".</div><div><br></div><div>3. In CGE, it is possible to use a collection of .ttf / .otf to define a font. Speculating, something like this (matching <a href="https://castle-engine.io/apidoc/html/CastleFonts.TCastleFontFamily.html" target="_blank">https://castle-engine.io/apidoc/html/CastleFonts.TCastleFontFamily.html</a> ) could be available to express this in X3D:</div><div><br></div><div>"""</div><div>Shape {</div><div> geometry Text {</div><div> fontStyle FontStyle {</div><div> familyComposed DEF DejaVu FontFamily {</div><div> regularUrl "DejaVuSerif.ttf"</div><div> italicUrl "DejaVuSerif-Italic.ttf"</div><div> boldUrl "DejaVuSerif-Bold.ttf"</div><div> boldItalicUrl "DejaVuSerif-BoldItalic.ttf"</div><div> }</div><div> }</div><div> string "this has regular style"</div><div> }</div><div>}</div><br><div>Shape {</div><div> geometry Text {</div><div> fontStyle FontStyle {</div><div> composedFontFamily USE DejaVu</div><div> style "ITALIC"</div><div> }</div><div> string "this has italic style"</div><div> }</div><div>}</div><div><br></div><div>Shape {</div><div> geometry Text {</div><div> fontStyle FontStyle {</div><div> composedFontFamily USE DejaVu</div><div> style "BOLDITALIC"</div><div> }</div><div> string "this has italic+bold style"</div><div> }</div><div>}</div><div>"""</div><div><br></div><div>4. I wonder whether the FontLibrary that you mentioned will fulfill some of the use-cases I mentioned above and answer some of my questions :) No rush, I understand this is in the design phase, I'll want and see what you propose, maybe when I see FontLibrary -> the above points will no longer matter because everything will be obvious.</div><div><br></div><div>Regards,</div><div>Michalis</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">czw., 27 lut 2025 o 02:40 Brutzman, Donald (Don) (CIV) via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">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>
<div dir="ltr">
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
Dick and I worked on suggested prose for X3D 4.1 with details continuing in Mantis 1490 below.</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
Review request:</div>
<ul style="list-style-type:disc">
<li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
<div>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;">
<div><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#FontStyle" id="m_2441348715669165069m_-486801823525789072LPlnk" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/text.html#FontStyle</a></div>
</li></ul>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
Improvements:</div>
<ul style="list-style-type:disc">
<li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
<div>Include all <span style="background-color:rgb(255,255,0)">
X3DURLObject </span>fields,</div>
</li></ul>
<div style="margin-left: 40px; font-family: "Courier New", monospace; font-size: 9pt;">
<span style="background-color:rgb(255,255,0)"> SFTime [in,out] autoRefresh 0.0 [0,โ)</span></div>
<div style="margin-left: 40px; font-family: "Courier New", monospace; font-size: 9pt;">
<span style="background-color:rgb(255,255,0)"> SFTime [in,out] autoRefreshTimeLimit 3600.0 [0,โ)</span></div>
<div style="margin-left: 40px; font-family: "Courier New", monospace; font-size: 9pt;">
<span style="background-color:rgb(255,255,0)"> SFString [in,out] description ""</span></div>
<div style="margin-left: 40px; font-family: "Courier New", monospace; font-size: 9pt;">
<span style="background-color:rgb(255,255,0)"> SFBool [in,out] load TRUE</span></div>
<div style="margin-left: 40px; font-family: "Courier New", monospace; font-size: 9pt;">
<span style="background-color:rgb(255,255,0)"> MFString [in,out] url [] [URI]</span></div>
<ul style="list-style-type:disc">
<li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
<div>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="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>New prose:</div>
</li></ul>
<div style="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;">
<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="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;">
<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_2441348715669165069m_-486801823525789072OWA4a9800f9-0fbf-770b-de3e-e998733183a7" 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_2441348715669165069m_-486801823525789072OWA0b6072c9-0900-2aae-fa18-88e909b09c35" 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_2441348715669165069m_-486801823525789072OWAd7e5e7c4-348f-7d3a-733c-d900916430a7" target="_blank">
ISO/IEC 14496-22 Open Font Format</a>) is also recommended.</span></div>
<div style="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;">
<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="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;">
<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="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;">
<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_2441348715669165069m_-486801823525789072OWAd2386a10-2f86-660e-113b-eba01571f976" target="_blank">
9.2.1 URLs, URNs and URIs</a>.</span></div>
<div style="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;">
Looking it over, adding more functionality to FontStyle node seems to be unwise. Dick has an excellent proposal:</div>
<div style="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;">
<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="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;">
<span style="background-color:rgb(128,255,255)">Feedback is welcome.</span></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
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="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
Thanks for all review. It feels like we are finally converging on a straightforward approach to valuable future capabilities.</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
Have fun with X3D fonts! ๐</div>
<div id="m_2441348715669165069m_-486801823525789072Signature"><div style="margin: 0in; font-family: Calibri, sans-serif; font-size: 11pt;"><span style="font-family:"Courier New";font-size:9pt"><br>
</span></div><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 <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 <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_2441348715669165069m_-486801823525789072appendonsend"></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:98%">
<div dir="ltr" id="m_2441348715669165069m_-486801823525789072divRplyFwdMsg"><span style="font-family: Calibri, sans-serif; font-size: 11pt;"><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;">
Wow, really super Holger! ๐</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; font-size: 11pt;">
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;">
<br>
</div>
<div style="direction: ltr; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
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;">
<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;">
<div style="direction:ltr"><a href="https://mantis.web3d.org/view.php?id=1490" id="m_2441348715669165069m_-486801823525789072OWA0e38a915-dfc6-1b38-c7d2-28e637bbcc1f" 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;">
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;">
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_2441348715669165069m_-486801823525789072OWAeefa40f7-d30b-3559-8237-28f1d1969cc2" 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;">
<br>
</div>
<div style="direction: ltr; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
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;">
- 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_2441348715669165069m_-486801823525789072OWA3e739ff0-86a5-aa34-7783-1aa6f5b4d30c" 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_2441348715669165069m_-486801823525789072OWAd59a3e47-0fa9-a558-08af-f3d3e0d35019" 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_2441348715669165069m_-486801823525789072OWAe32c21e2-0d22-9f10-5ab4-f63a9ebbcffe" 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;">
<br>
</div>
<div style="direction: ltr; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
Have fun with X3D Text! :)</div>
<div id="m_2441348715669165069m_-486801823525789072x_Signature"><div style="margin: 0in; font-family: Calibri, sans-serif; font-size: 11pt;"><span style="font-family:"Courier New";font-size:9pt"><br>
</span></div><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 <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 <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_2441348715669165069m_-486801823525789072x_appendonsend"></div>
<div style="direction: ltr; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt;">
<br>
</div>
<hr style="direction:ltr;display:inline-block;width:98%">
<div dir="ltr" id="m_2441348715669165069m_-486801823525789072x_divRplyFwdMsg"><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 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_2441348715669165069m_-486801823525789072OWA6db05638-802a-884e-41fd-5de7a9e5a88f" 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;">
--</div>
<div style="direction: ltr; text-align: left; text-indent: 0px;">
Holger Seelig</div>
<div style="direction: ltr; text-align: left; text-indent: 0px;">
Leipzig, Germany</div>
<div style="direction: ltr; text-align: left; text-indent: 0px;">
<br>
</div>
<div style="direction: ltr; text-align: left; text-indent: 0px;">
<a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a></div>
<div style="direction: ltr; text-align: left; text-indent: 0px;">
<a href="https://create3000.github.io/x_ite/" 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>
_______________________________________________<br>x3d-public mailing list<br>x3d-public@web3d.org<br>http://web3d.org/mailman/listinfo/x3d-public_web3d.org<br></div></blockquote></div><br></body></html>