On 15/01/2019 13:25, Philippe Verdy via Unicode wrote:
Note that even if this NNBSP character is not mapped in a font, it should be rendered correctly with all modern renderers (the mapping is necessary only when a font design wants to tune its metrics, because its width varies between 1/8 and 1/6 em (the narrow space is a bit narrower in traditional English typography than in French, so typical English design set it at about 1/8 em, typical French design set it at 1/6 em, and neutral fonts may set it somewhere in the middle); the measure in em may however vary with some fonts (notably those using "narrow" or "wide" letters by default (because the font size in em indicates only its height) and in decorated/cursive styles (e.g. fonts with swashes need a higher line gap, the font design of the em size may be smaller than for modern simplified styles for display). But a renderer should have no problem using a default metric for all whitespace characters, that actually don't need any glyph to be drawn: All what is needed is metrics, everything else, inclusing character properties like breaking are infered by the renderer independantly of the font and other per-language tuning, or controled by styling effects applied on top of the font
Indeed, since every Unicode implementation must rely on the character properties, and given keeping this library up-to-date is straightforward and easy, there is really no point in displaying a .notdef box in lieu of whatever whitespace. As a consequence, prior to assessing the impact of the group separator migration from (wrong) <NBSP> to (correct) <NNBSP> on implementations and interoperability, Unicode would be well advised to start assessing the impact of implementations (and, of course, the backing vendors) on correct rendering of <NNBSP>, and on the related usability and interoperability of the digital representation of those many locales that should rely on <NNBSP>.
A renderer may expand the kerning/approach if needed for example to generate "hollow" or "shadow" effects, or to generate synthetic weights, including with "variable" fonts support, typically the renderer will base the metrics of all missing/unmapped whitespaces from the metrics given to the normal SPACE or NBSP which are typically both mapped to the same glyph; NNBSP will be synthetized easily using half the advance width of SPACE, and it's fine; renderers can also synthetize all other whitespaces for ideographic usages, or will adapt the rendering if instructed to synthetize a monospaced variant: here there's a choice for NNBSP to be rendered like NBSP, typically for French as it is normally a bit wider, or as a zero-width space like in English, or contextually for example zero-width near punctuations or NBSP between letters/digits).
In a monospaced font, NNBSP has normally the width of a character, but it has been designed for proportional fonts, and there, it must not have the width of a digit, as that would annihilate the required effect. The group separator must never have the width of a full digit, not even of digit 1 in variable-width digits, but just a slight gap ensuring correct readability, BTW also after the decimal separator as per ISO 80000. Between punctuation, <NNBSP> mustn’t be zero-wide, as it is used in English to separate closing single and double quotation marks when a nested quotation ends the first level quotation. I don’t think that English does use <NNBSP> elsewhere around punctuation except dashes if appropriate according to the applied style manual, but Canadian French does, unlike an urban legend saying it doesn’t. It does only prefer not to space off punctuation *if* <NNBSP> is unavailable. That is another proof of the inappropriateness of the <NBSP> for the purpose of spacing off tall punctuation marks.
Fonts only specify defaults that alter the rendering produced by a renderer, but a renderer is not required to use all infos and all glyphs in a specific font, it has to adapt to the context and choose what is more relevant and which kind of data it recognizeds and implements/uses at runtime. The font just provides the best settings according to the font designer, if all features are enabled, but most work is done by the renderer (and fonts are completely unaware of tyhe actual encoding of documents, fonts are only a database containing multiple features/settings, all of them bneing optional and selectable individually).
Good point, indeed. Currently we are too much concerned with fonts, while actually it’s all up to the renderer. Today as most devices are permanently connected to the internet, a decent rendering engine could as well grab missing glyphs from an online repository, at Google Fonts or at the application vendor’s website. All that missing-glyph-whining seems completely outdated and very detrimental to the user experience. It is so anachronistic that people shouldn’t be surprised about suspicions of intentional bugs for the purpose of unlawful lobbying by messing up user experience outside of certain DTP applications. The French locale is the most heavily impacted victim of those operating modes.
If your fonts behave incorrectly on your system because it does not map any glyph for NNBSP, don't blame the font or Unicode about this problem, blame the renderer (or the application or OS using it, may be they are very outdated and were not aware of these features, theyt are probably based on old versions of Unicode when NNBSP was still not present even if it was requested since very long at least for French and even English, before even Unicode, and long before Mongolian was then encoded, only in Unicode and not in any known supported legacy charset: Mongolian was specified by borrowing the same NNBSP already designed for Latin, because the Mongolian space had no known specific behavior: the encoded whitespaces in Unicode are compeltely script-neutral, they are generic, and are even BiDi-neutral, they are all usable with any script).
Completely agreed. If I blame Unicode it’s for keeping the NNBSP off the Standard during almost a decade, which translates to two decades of delay due to the loss of dynamics past the early rush, and to people who keep bullying the NNBSP 20 years after it was encoded, and despite it is now widely supported. Also the ignorance related to NNBSP is still abysmal despite the very popular style manual of the French Imprimerie Nationale requires it’s use explicitly: EXCLAMATION MARK espace fine insécable ! justifying space (quoted/translated from figure p. 149; ISBN 9782743304829). Many thanks to all who took part in this thread – that is very instructive and has brought up many new insights – and likewise to those spinning of child threads and sharing material. Keep on the good work and be successful! Best regards, Marcel