w3c / font-text-cg

GitHub Pages
https://w3c.github.io/font-text-cg/
Other
28 stars 5 forks source link

Terminological glossary? #42

Open tiroj opened 3 years ago

tiroj commented 3 years ago

Over in issue 41 , @simoncozens wrote

Your idea currently looks a bit end-to-end, in that you have both shaping and rendering. These are separate processes ...

This put me in mind that there are a number of terms in use in discussions that are not well defined or that are used in slightly different ways depending either on context or who is speaking. I was also reminded of this during the most recent meeting, when @PeterCon spoke about ‘rendering’ in the context of Unicode, implying what seemed to me a very broad category above text encoding, while I suspect rasteriser engineers and hinting experts might regularly use the term in a more restricted way. Other terms that seem to have multiple or ambiguous meanings are ‘layout’, ‘display’, and—to a lesser extent?—‘shaping’.

Do we care? I’m not suggesting that we need to have a very strict terminology in which each of these terms is assigned a very precise and limited meaning, but maybe there is value in capturing the ways in which the terms are commonly used? This may be useful to newcomers to the field and to our discussions?

PeterConstable commented 3 years ago

Yeah... Terminology used conversationally is often contextual. In UTC, people might often use "rendering" to mean everything involved in presentation of a Unicode string, and in that context I might do the same. But in a different context, I might use "rendering" to mean only the processing that involves generating the bitmap result sent to a display or printer. In these contexts, I might include all of the processing of SVG or COLR v1 "color glyph" descriptions.

But if the topic was about processing of the SVG or COLR v1 data, one might need to get even more specific. E.g., in a conversation with @rsheeter this morning we were discussing compositing in relation to COLRv1, and that, while the specs define the compositing modes as raster operations, in some cases an implementation might not rasterize one of the items being composed but rather treat it as a clip path. At that level, "render" is too broad a term to be useful.

PeterConstable commented 3 years ago

I noticed that UTR #53, Unicode Arabic Text Rendering uses "rendering" in the generic sense of 'text display'. "Shaping" might have been a better term in that context.

As for "shaping", even that gets used in two senses: in Uniscribe, the ScriptShape() function just deals with the process of mapping from characters to final glyph sequences, without any positioning. That makes sense in that it is the glyph selection that determines the shapes of the text elements that get presented. But I think often "shaping" or "shaping engine" get used in a sense that also encompasses positioning. For example, it is explicitly used that way here: "Shaping is a complicated process that converts a string (sequence of Unicode code points) into positioned glyphs." I think it was to avoid this ambiguity that DWrite calls its counterpart to ScriptShape, "GetGlyphs".