Yes. Fonts (font families, actually) associate each glyph with specific
characters in specific character sets.
Are you implying that all fonts in a font family share same glyphs?
That depends on what you mean by "coded character set". In general, I
would consider a coded character set essentially equivalent to a
character encoding or code page. They all mean the same thing: a way to
make a one-to-one association between some numeric value and a
named/described character.
I go by the following definitions:
CHARACTER SET:
“Character set is a set of characters. It is not a way of representing
characters on a page or in a file. Rather, it defines the range of
characters that can be so represented. Unicode is technically not so
much a character set as a coded character set”
CODE POINTS:
“A character set defines a set of characters, but does not specify any
way to refer to them. You have to assign them numbers so that they can
be referred to, and those numbers are termed code points.”
CODED CHARACTER SET:
“Coded character set is A character set which has code points matched
with characters so that the characters can be referred to”
CHARACTER ENCODING / CODE PAGE
“Character encoding is the system by which the characters in a set are
represented in binary form in a file. The Unicode set may be
represented using three encodings: UTF-8, UTF-16 and UTF-32.”
So going by these definitions coded character set is not the same as
character encoding / code page
Using that definition, the answer to your second question is yes, but
only trivially so, since "any character encoding for that coded
character set" is exactly just the one character encoding that's the
same as that coded character set.
If I understand you correctly, you’re implying that if for example
font F supports coded character set C then F implicitly supports all
character encodings for coded character set C ( thus we could say F
doesn’t EXPLICITLY support character encodings for C )?
Real world example - if font F supports Unicode, then it can
implicitly be used with any character encoding for Unicode ( Utf-8,
Utf-16, Utf-32 etc ). Thus, font F doesn’t really distinguish between
different encodingS for C?!
But according to the link you’ve provided
http://www.microsoft.com/typography/unicode/cscp.htm:
“An application can determine which codepages a specific font
supports”
This excerpt COULD also be understood as saying that even if font F
supports coded character set C, it doesn’t mean it supports all
character encodings for C. In other words, even if font F supports
Unicode, it doesn’t mean it supports all character encodings for
Unicode?
The main point is that you _can't_ draw strings using other encodings.
No matter what the encoding, it has to be converted to a .NET
System.String first. You can see the consequences of this by comparing
the information that the Windows utility Character Map shows with the
output you see in a .NET program.
I assume you mean comparing visual appearances of glyphs ( for font
F ) in Windows utility Character Map with visual appearances of text
drawn with F in Net apps?
Some of the TT/OT fonts (e.g. Marlett and Bookshelf Symbol 7, to name a
couple that I find on my own Windows 7 installation) don't support
Unicode though. And drawing them from a .NET program only reproduces
their glyphs one-for-one as Character Map shows them for the character
values below 128.
Which makes sense, if you think about it. To support drawing using a
font that doesn't support Unicode, the Unicode character values have to
be converted to a (the) character encoding that the font supports. So,
for example, code point 128 in Unicode is not going to produce the same
output as code point 128 using the character encoding that the font is
actually supporting. Drawing using Unicode code point 128 is going to
result in whatever code point that 128 mapped to in the font's supported
character encoding.
So even if font F supports just coded character set C, we could still
use F with character encodings for coded character set D?! Font F
won’t “complain”, but if D has characters mapped to different code
points than C, then glyphs will be mapped to wrong characters when
used with character encodings for D?
If you know the character encoding that the font supports (*), then you
could select the appropriate Unicode character value to get the glyph
you want from a font that doesn't support Unicode, when drawing using a
Unicode-only API such as .NETs.
“If you know the character encoding that the font supports…”
* You mean if I know coded character set that the font supports?
* Anyhow, are you saying that in Net we have the ability to map
particular Unicode point code ( say Unicode character value 100 ) to
particular font code point? Thus, if font F has a glyph representing
character A at code point 100, while Unicode has character A at code
point 65, then I could somehow map Unicode’s code point 65 to font’s
code point 100?
Some of the TT/OT fonts (e.g. Marlett and Bookshelf Symbol 7, to name a
couple that I find on my own Windows 7 installation) don't support
Unicode though. And drawing them from a .NET program only reproduces
their glyphs one-for-one as Character Map shows them for the character
values below 128.
• So when using font F with coded character set D, Net somehow knows
that only for font values below 128 do glyphs map correctly to
characters in D? And thus when Net detects that we’re matching F with
incompatible coded character set D, it restricts usage of font F only
to glyphs with code points up to 128?
• But you did imply previously that we still have the option to
somehow ( I assume we do that by preventing Net from restricting usage
of font F only to code points below 128 ) manually map glyphs to
characters?
I don't even understand this part of your post. It seems circular in
nature.
My assumption, that at least vector fonts don’t contain actual visual
representation of a characters ( thus they don’t contain actual image
file for each code point ), but instead they contain blueprints on how
to draw glyphs when they are requested by some app, comes from the way
I interpret the following definitions:
"Outline fonts (also called vector fonts) use Bézier curves, drawing
instructions and mathematical formulae to describe each glyph, which
make the character outlines scalable to any size."
"TrueType is an outline font standard. TrueType glyphs are described
with quadratic Bezier curves. It is currently very popular and
implementations exist for all major operating systems."
I appreciate your help