<div dir="ltr"><div>I understand that global scope is preferred if the concept of the FontLibrary node is that an author can add a font to the existing set of system fonts, and then be used in the same way as installed system fonts. I think this is the rationale for the current design as root node although I am not sure it has been stated as such.</div><div><br></div><div>However, this concept is questionable since X3D otherwise does not have a way to use system resources, like system sounds. Instead, all resources are provisioned within the scene, typically with a resource locator, or url. Sounds, videos or textures, for example. X3D then uses such a resource locally, for example in an Appearance node. There is no global texture or sound library.</div><div><br></div><div>This is the argument that a FontLibray node which would hold a url should be treated the same way as all other resources a X3D file uses. Scene fonts should not be special, relative to other resources. Scene fonts should not be treated as system fonts.</div><div><br></div><div>FontLibrary therefore should also be a field with local scope, like all other resources. There could be a Text.fontLibray field if FontStyle.fontLibrary is non-preferred due to complexity concerns. Such a field also would address scoping and matching questions unambiguously. </div><div><br></div><div>More about scope:</div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sun, Mar 16, 2025 at 4:21 PM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>> wrote:</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="msg3119786828776441550"><div dir="ltr"><ul style="margin-top:0px;margin-bottom:0px;list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>Holger's statements about "scene scope" are very clarifying, and are  reflected/refined in last week's draft spec update in several places.  Thanks Andreas for regular posts about your implementation experience too.</div></li></ul></div></div></blockquote><div><br></div><div>I hope I can contribute. Providing an X3D example using a font file with a collection of multiple fonts would help with implementation efforts since the selection process seems undefined so far.</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 class="msg3119786828776441550"><div dir="ltr"><ul style="margin-top:0px;margin-bottom:0px;list-style-type:disc"><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>It seems to me like functionality for several of your points is answered by last week's addition.</div>
</li><ul style="margin-top:0px;margin-bottom:0px;list-style-type:circle">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div><span style="background-color:rgb(128,255,255)">Proposed</span>.
<span style="background-color:rgb(255,255,128)">The visibility of FontLibrary fonts is scoped to the current model, and FontLibrary nodes are typically defined with other root nodes in a scene. Fonts from FontLibrary nodes are also usable when defined within
 an Inline node, or when defined among the topmost nodes of a Prototype instance contained in a scene.</span></div></li></ul></ul></div></div></blockquote><div><br></div><div>This was not very clear to me, unfortunately. Let me repeat my question here:</div><div><br></div><div><span style="color:rgb(0,0,0);font-family:Calibri,Arial,Helvetica,sans-serif;font-size:14.6667px">"Fonts from FontLibrary nodes are also usable when defined within an Inline node"</span><br style="color:rgb(0,0,0);font-family:Calibri,Arial,Helvetica,sans-serif;font-size:14.6667px"><span style="color:rgb(0,0,0);font-family:Calibri,Arial,Helvetica,sans-serif;font-size:14.6667px"> means (to me) that if an Inline node has a font defined in a FontLibrary root node within it, it is usable also in the parent node.</span></div><div><span style="color:rgb(0,0,0);font-family:Calibri,Arial,Helvetica,sans-serif;font-size:14.6667px"><br></span></div><div>Is this the intended meaning ?</div><div><span style="color:rgb(0,0,0);font-family:Calibri,Arial,Helvetica,sans-serif;font-size:14.6667px"><br></span></div><div><span style="color:rgb(0,0,0);font-family:Calibri,Arial,Helvetica,sans-serif;font-size:14.6667px">I think this is the opposite of the iframe case which Holger mentioned, so the sentence may actually be intended to mean the opposite ?</span><br style="color:rgb(0,0,0);font-family:Calibri,Arial,Helvetica,sans-serif;font-size:14.6667px"><br></div><div>Perhaps I misunderstand what 'defined' refers to.</div><div><br></div><div>As Joe points out, scope in X3D is tightly coupled to execution context. Execution context is well understood. </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 class="msg3119786828776441550"><div dir="ltr"><ul style="margin-top:0px;margin-bottom:0px;list-style-type:disc"><ul style="margin-top:0px;margin-bottom:0px;list-style-type:circle"><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
</li></ul>
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>We are intentionally silent about some things.  For example, if duplicate fonts are encountered, we do not specify recovery procedures.  This is in keeping with X3D design to not require browser responses when behavior is nondeterministic
 and better left not defined.  Of note is that such things (e.g. which font came first?) are usually preventable by authors who can carefully create correct results.</div>
</li><ul style="margin-top:0px;margin-bottom:0px;list-style-type:circle">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>If an issue is so uproarious that it must be mentioned, we might go as far as a "behavior is undefined" note.  For example</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div>"NOTE. Behavior is undefined when multiple fonts are defined with the same family name."</div></li></ul></ul></div></div></blockquote><div><br></div><div>Being silent allows diverging browser behaviours which may be an acceptable price.</div><div>Ordering then seems to be one of the things which do not need language. Browsers would be allowed to be picky and assume that FontLibrary before FontStyle order would be natural.  </div><div><br></div><div>Hopefully, this can be seen as constructive,</div><div>-Andreas</div></div></div>