mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 14:38:11 +00:00
LibPDF: Stop storing unicode code points in Encoding
In PDF's fonts, encoding objects are used to translate bytes into fonts' glyphs. Glyphs (in the fonts we currently support) organise their glyphs in such a way that they are accessed by name, and thus encoding translate between a byte sequence and a glyph name. Note that an no point this translation includes a Unicode character, and therefore assigning a character to a glyph in the Encoding object is the wrong thing to do. Moreover, using the code point for this character during the byte-sequence-to-glyph translation sequence is double-wrong. This commit removes the characters associated to each translation in the built-in Encoding objects. In order to keep commits short and sweet, I'm currently simply removing the character from the enumeration, leaving the old structure this information was held on intact. Instead, I'm filling the "code_point" member with a zero, and filling both mappings (which will be changed later on too) with the glyph name and the associated char code.
This commit is contained in:
parent
5577d5f789
commit
2f773b3c5c
2 changed files with 626 additions and 632 deletions
|
@ -79,10 +79,9 @@ NonnullRefPtr<Encoding> Encoding::standard_encoding()
|
|||
{
|
||||
static NonnullRefPtr<Encoding> encoding = adopt_ref(*new Encoding());
|
||||
if (encoding->m_descriptors.is_empty()) {
|
||||
#define ENUMERATE(string, name, standard_code, mac_code, win_code, pdf_code) \
|
||||
auto name##_code_point = *Utf8View(string##sv).begin(); \
|
||||
encoding->m_descriptors.set(standard_code, { string, name##_code_point }); \
|
||||
encoding->m_name_mapping.set(#name, name##_code_point);
|
||||
#define ENUMERATE(name, standard_code, mac_code, win_code, pdf_code) \
|
||||
encoding->m_descriptors.set(standard_code, { #name, 0 }); \
|
||||
encoding->m_name_mapping.set(#name, standard_code);
|
||||
ENUMERATE_LATIN_CHARACTER_SET(ENUMERATE)
|
||||
#undef ENUMERATE
|
||||
}
|
||||
|
@ -94,10 +93,9 @@ NonnullRefPtr<Encoding> Encoding::mac_encoding()
|
|||
{
|
||||
static NonnullRefPtr<Encoding> encoding = adopt_ref(*new Encoding());
|
||||
if (encoding->m_descriptors.is_empty()) {
|
||||
#define ENUMERATE(string, name, standard_code, mac_code, win_code, pdf_code) \
|
||||
auto name##_code_point = *Utf8View(string##sv).begin(); \
|
||||
encoding->m_descriptors.set(mac_code, { string, name##_code_point }); \
|
||||
encoding->m_name_mapping.set(#name, name##_code_point);
|
||||
#define ENUMERATE(name, standard_code, mac_code, win_code, pdf_code) \
|
||||
encoding->m_descriptors.set(mac_code, { #name, 0 }); \
|
||||
encoding->m_name_mapping.set(#name, mac_code);
|
||||
ENUMERATE_LATIN_CHARACTER_SET(ENUMERATE)
|
||||
#undef ENUMERATE
|
||||
}
|
||||
|
@ -109,10 +107,9 @@ NonnullRefPtr<Encoding> Encoding::windows_encoding()
|
|||
{
|
||||
static NonnullRefPtr<Encoding> encoding = adopt_ref(*new Encoding());
|
||||
if (encoding->m_descriptors.is_empty()) {
|
||||
#define ENUMERATE(string, name, standard_code, mac_code, win_code, pdf_code) \
|
||||
auto name##_code_point = *Utf8View(string##sv).begin(); \
|
||||
encoding->m_descriptors.set(win_code, { string, name##_code_point }); \
|
||||
encoding->m_name_mapping.set(#name, name##_code_point);
|
||||
#define ENUMERATE(name, standard_code, mac_code, win_code, pdf_code) \
|
||||
encoding->m_descriptors.set(win_code, { #name, 0 }); \
|
||||
encoding->m_name_mapping.set(#name, win_code);
|
||||
ENUMERATE_LATIN_CHARACTER_SET(ENUMERATE)
|
||||
#undef ENUMERATE
|
||||
encoding->m_windows = true;
|
||||
|
@ -125,10 +122,9 @@ NonnullRefPtr<Encoding> Encoding::pdf_doc_encoding()
|
|||
{
|
||||
static NonnullRefPtr<Encoding> encoding = adopt_ref(*new Encoding());
|
||||
if (encoding->m_descriptors.is_empty()) {
|
||||
#define ENUMERATE(string, name, standard_code, mac_code, win_code, pdf_code) \
|
||||
auto name##_code_point = *Utf8View(string##sv).begin(); \
|
||||
encoding->m_descriptors.set(pdf_code, { string, name##_code_point }); \
|
||||
encoding->m_name_mapping.set(#name, name##_code_point);
|
||||
#define ENUMERATE(name, standard_code, mac_code, win_code, pdf_code) \
|
||||
encoding->m_descriptors.set(pdf_code, { #name, 0 }); \
|
||||
encoding->m_name_mapping.set(#name, pdf_code);
|
||||
ENUMERATE_LATIN_CHARACTER_SET(ENUMERATE)
|
||||
#undef ENUMERATE
|
||||
}
|
||||
|
@ -140,10 +136,9 @@ NonnullRefPtr<Encoding> Encoding::symbol_encoding()
|
|||
{
|
||||
static NonnullRefPtr<Encoding> encoding = adopt_ref(*new Encoding());
|
||||
if (encoding->m_descriptors.is_empty()) {
|
||||
#define ENUMERATE(string, name, code) \
|
||||
auto name##_code_point = *Utf8View(string##sv).begin(); \
|
||||
encoding->m_descriptors.set(code, { string, name##_code_point }); \
|
||||
encoding->m_name_mapping.set(#name, name##_code_point);
|
||||
#define ENUMERATE(name, code) \
|
||||
encoding->m_descriptors.set(code, { #name, 0 }); \
|
||||
encoding->m_name_mapping.set(#name, code);
|
||||
ENUMERATE_SYMBOL_CHARACTER_SET(ENUMERATE)
|
||||
#undef ENUMERATE
|
||||
}
|
||||
|
@ -155,10 +150,9 @@ NonnullRefPtr<Encoding> Encoding::zapf_encoding()
|
|||
{
|
||||
static NonnullRefPtr<Encoding> encoding = adopt_ref(*new Encoding());
|
||||
if (encoding->m_descriptors.is_empty()) {
|
||||
#define ENUMERATE(string, name, code) \
|
||||
auto name##_code_point = *Utf8View(string##sv).begin(); \
|
||||
encoding->m_descriptors.set(code, { string, name##_code_point }); \
|
||||
encoding->m_name_mapping.set(#name, name##_code_point);
|
||||
#define ENUMERATE(name, code) \
|
||||
encoding->m_descriptors.set(code, { #name, 0 }); \
|
||||
encoding->m_name_mapping.set(#name, code);
|
||||
ENUMERATE_ZAPF_DINGBATS_CHARACTER_SET(ENUMERATE)
|
||||
#undef ENUMERATE
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue