summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/font/texfont.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/font/texfont.c')
-rw-r--r--Build/source/texk/web2c/luatexdir/font/texfont.c98
1 files changed, 51 insertions, 47 deletions
diff --git a/Build/source/texk/web2c/luatexdir/font/texfont.c b/Build/source/texk/web2c/luatexdir/font/texfont.c
index 332a8a3446e..0134243d929 100644
--- a/Build/source/texk/web2c/luatexdir/font/texfont.c
+++ b/Build/source/texk/web2c/luatexdir/font/texfont.c
@@ -125,6 +125,8 @@ int new_font(void)
set_font_bc(id, 1);
set_font_writingmode(id, 0);
set_font_identity(id, 0);
+ /* set_font_encoding_bytes(id,1) */ /* ? */
+ set_font_subfont(id, 0);
set_hyphen_char(id, '-');
set_skew_char(id, -1);
/*tex vertical */
@@ -141,45 +143,44 @@ int new_font(void)
set_font_param(id, k, 0);
}
/*tex character info zero is reserved for |notdef|. The stack size 1, default item value 0. */
- font_tables[id]->characters = new_sa_tree(1, 1, sa_value);
+ font_tables[id]->_characters = new_sa_tree(1, 1, sa_value);
ci = xcalloc(1, sizeof(charinfo));
set_charinfo_name(ci, xstrdup(".notdef"));
- font_tables[id]->charinfo = ci;
- font_tables[id]->charinfo_size = 1;
- font_tables[id]->charinfo_cache = NULL;
+ font_tables[id]->_charinfo = ci;
+ font_tables[id]->_charinfo_size = 1;
return id;
}
void font_malloc_charinfo(internal_font_number f, int num)
{
- int glyph = font_tables[f]->charinfo_size;
+ int glyph = font_tables[f]->_charinfo_size;
font_bytes += (int) (num * (int) sizeof(charinfo));
- do_realloc(font_tables[f]->charinfo, (unsigned) (glyph + num), charinfo);
- memset(&(font_tables[f]->charinfo[glyph]), 0, (size_t) (num * (int) sizeof(charinfo)));
- font_tables[f]->charinfo_size += num;
+ do_realloc(font_tables[f]->_charinfo, (unsigned) (glyph + num), charinfo);
+ memset(&(font_tables[f]->_charinfo[glyph]), 0, (size_t) (num * (int) sizeof(charinfo)));
+ font_tables[f]->_charinfo_size += num;
}
-#define find_charinfo_id(f,c) (get_sa_item(font_tables[f]->characters,c).int_value)
+#define find_charinfo_id(f,c) (get_sa_item(font_tables[f]->_characters,c).int_value)
charinfo *get_charinfo(internal_font_number f, int c)
{
int glyph;
charinfo *ci;
if (proper_char_index(c)) {
- glyph = get_sa_item(font_tables[f]->characters, c).int_value;
+ glyph = get_sa_item(font_tables[f]->_characters, c).int_value;
if (!glyph) {
sa_tree_item sa_value = { 0 };
- int tglyph = ++font_tables[f]->charinfo_count;
- if (tglyph >= font_tables[f]->charinfo_size) {
+ int tglyph = ++font_tables[f]->_charinfo_count;
+ if (tglyph >= font_tables[f]->_charinfo_size) {
font_malloc_charinfo(f, 256);
}
- font_tables[f]->charinfo[tglyph].ef = 1000;
+ font_tables[f]->_charinfo[tglyph].ef = 1000;
sa_value.int_value = tglyph;
/*tex 1 means global */
- set_sa_item(font_tables[f]->characters, c, sa_value, 1);
+ set_sa_item(font_tables[f]->_characters, c, sa_value, 1);
glyph = tglyph;
}
- return &(font_tables[f]->charinfo[glyph]);
+ return &(font_tables[f]->_charinfo[glyph]);
} else if (c == left_boundarychar) {
if (left_boundary(f) == NULL) {
ci = xcalloc(1, sizeof(charinfo));
@@ -195,16 +196,16 @@ charinfo *get_charinfo(internal_font_number f, int c)
}
return right_boundary(f);
}
- return &(font_tables[f]->charinfo[0]);
+ return &(font_tables[f]->_charinfo[0]);
}
static void set_charinfo(internal_font_number f, int c, charinfo * ci)
{
int glyph;
if (proper_char_index(c)) {
- glyph = get_sa_item(font_tables[f]->characters, c).int_value;
+ glyph = get_sa_item(font_tables[f]->_characters, c).int_value;
if (glyph) {
- font_tables[f]->charinfo[glyph] = *ci;
+ font_tables[f]->_charinfo[glyph] = *ci;
} else {
normal_error("font","character insertion failed");
}
@@ -319,13 +320,13 @@ charinfo *char_info(internal_font_number f, int c)
return 0;
if (proper_char_index(c)) {
register int glyph = (int) find_charinfo_id(f, c);
- return &(font_tables[f]->charinfo[glyph]);
+ return &(font_tables[f]->_charinfo[glyph]);
} else if (c == left_boundarychar && left_boundary(f) != NULL) {
return left_boundary(f);
} else if (c == right_boundarychar && right_boundary(f) != NULL) {
return right_boundary(f);
}
- return &(font_tables[f]->charinfo[0]);
+ return &(font_tables[f]->_charinfo[0]);
}
scaled_whd get_charinfo_whd(internal_font_number f, int c)
@@ -1073,15 +1074,15 @@ int copy_font(int f)
charinfo *ci;
int k = new_font();
{
- ci = font_tables[k]->charinfo;
- ci_cnt = font_tables[k]->charinfo_count;
- ci_size = font_tables[k]->charinfo_size;
+ ci = font_tables[k]->_charinfo;
+ ci_cnt = font_tables[k]->_charinfo_count;
+ ci_size = font_tables[k]->_charinfo_size;
memcpy(font_tables[k], font_tables[f], sizeof(texfont));
- font_tables[k]->charinfo = ci;
- font_tables[k]->charinfo_count = ci_cnt;
- font_tables[k]->charinfo_size = ci_size;
+ font_tables[k]->_charinfo = ci;
+ font_tables[k]->_charinfo_count = ci_cnt;
+ font_tables[k]->_charinfo_size = ci_size;
}
- font_malloc_charinfo(k, font_tables[f]->charinfo_count);
+ font_malloc_charinfo(k, font_tables[f]->_charinfo_count);
set_font_cache_id(k, 0);
set_font_used(k, 0);
set_font_touched(k, 0);
@@ -1110,6 +1111,8 @@ int copy_font(int f)
set_font_cidregistry(k, xstrdup(font_cidregistry(f)));
if (font_cidordering(f) != NULL)
set_font_cidordering(k, xstrdup(font_cidordering(f)));
+ set_font_encodingbytes(k,font_encodingbytes(f));
+ set_font_subfont(k,font_subfont(f));
i = (int) (sizeof(*param_base(f)) * (unsigned) (font_params(f)+1));
font_bytes += i;
param_base(k) = xmalloc((unsigned) (i+1));
@@ -1121,9 +1124,9 @@ int copy_font(int f)
math_param_base(k) = xmalloc((unsigned) i);
memcpy(math_param_base(k), math_param_base(f), (size_t) i);
}
- for (i = 0; i <= font_tables[f]->charinfo_count; i++) {
- ci = copy_charinfo(&font_tables[f]->charinfo[i]);
- font_tables[k]->charinfo[i] = *ci;
+ for (i = 0; i <= font_tables[f]->_charinfo_count; i++) {
+ ci = copy_charinfo(&font_tables[f]->_charinfo[i]);
+ font_tables[k]->_charinfo[i] = *ci;
}
if (left_boundary(f) != NULL) {
ci = copy_charinfo(left_boundary(f));
@@ -1134,7 +1137,7 @@ int copy_font(int f)
set_charinfo(k, right_boundarychar, ci);
}
/*tex Not updated yet: */
- font_tables[k]->charinfo_count = font_tables[f]->charinfo_count;
+ font_tables[k]->_charinfo_count = font_tables[f]->_charinfo_count;
return k;
}
@@ -1167,9 +1170,9 @@ void delete_font(int f)
}
}
/*tex free |notdef| */
- set_charinfo_name(font_tables[f]->charinfo + 0, NULL);
- free(font_tables[f]->charinfo);
- destroy_sa_tree(font_tables[f]->characters);
+ set_charinfo_name(font_tables[f]->_charinfo + 0, NULL);
+ free(font_tables[f]->_charinfo);
+ destroy_sa_tree(font_tables[f]->_characters);
free(param_base(f));
if (math_param_base(f) != NULL)
free(math_param_base(f));
@@ -1339,17 +1342,17 @@ void set_no_ligatures(internal_font_number f)
{
int c;
charinfo *co;
- if (font_tables[f]->ligatures_disabled)
+ if (font_tables[f]->_ligatures_disabled)
return;
co = char_info(f, left_boundarychar);
set_charinfo_ligatures(co, NULL);
co = char_info(f, right_boundarychar);
set_charinfo_ligatures(co, NULL);
- for (c = 0; c < font_tables[f]->charinfo_count; c++) {
- co = font_tables[f]->charinfo + c;
+ for (c = 0; c < font_tables[f]->_charinfo_count; c++) {
+ co = font_tables[f]->_charinfo + c;
set_charinfo_ligatures(co, NULL);
}
- font_tables[f]->ligatures_disabled = 1;
+ font_tables[f]->_ligatures_disabled = 1;
}
liginfo get_ligature(internal_font_number f, int lc, int rc)
@@ -1496,14 +1499,15 @@ static void dump_font_entry(texfont * f)
dump_int(f->_font_touched);
dump_int(f->_font_cache_id);
dump_int(f->_font_encodingbytes);
+ dump_int(f->_font_subfont);
dump_int(f->_font_oldmath);
dump_int(f->_font_slant);
dump_int(f->_font_extend);
dump_int(f->_font_squeeze);
dump_int(f->_font_mode);
dump_int(f->_font_width);
- dump_int(f->font_max_shrink);
- dump_int(f->font_max_stretch);
+ dump_int(f->_font_max_shrink);
+ dump_int(f->_font_max_stretch);
dump_int(f->_font_step);
dump_int(f->_font_tounicode);
dump_int(f->_font_type);
@@ -1518,7 +1522,7 @@ static void dump_font_entry(texfont * f)
dump_int(f->_font_natural_dir);
dump_int(f->_font_params);
dump_int(f->_font_math_params);
- dump_int(f->ligatures_disabled);
+ dump_int(f->_ligatures_disabled);
dump_int(f->_pdf_font_num);
dump_int(f->_pdf_font_attr);
}
@@ -1527,7 +1531,6 @@ void dump_font(int f)
{
int i, x;
set_font_used(f, 0);
- font_tables[f]->charinfo_cache = NULL;
dump_font_entry(font_tables[f]);
dump_string(font_name(f));
dump_string(font_area(f));
@@ -1669,14 +1672,15 @@ static void undump_font_entry(texfont * f)
undump_int(x); f->_font_touched = (char)x;
undump_int(x); f->_font_cache_id = x;
undump_int(x); f->_font_encodingbytes = (char)x;
+ undump_int(x); f->_font_subfont = x;
undump_int(x); f->_font_oldmath = x;
undump_int(x); f->_font_slant = x;
undump_int(x); f->_font_extend = x;
undump_int(x); f->_font_squeeze = x;
undump_int(x); f->_font_mode = x;
undump_int(x); f->_font_width = x;
- undump_int(x); f->font_max_shrink = x;
- undump_int(x); f->font_max_stretch = x;
+ undump_int(x); f->_font_max_shrink = x;
+ undump_int(x); f->_font_max_stretch = x;
undump_int(x); f->_font_step = x;
undump_int(x); f->_font_tounicode = (char)x;
undump_int(x); f->_font_type = x;
@@ -1691,7 +1695,7 @@ static void undump_font_entry(texfont * f)
undump_int(x); f->_font_natural_dir = x;
undump_int(x); f->_font_params = x;
undump_int(x); f->_font_math_params = x;
- undump_int(x); f->ligatures_disabled = x;
+ undump_int(x); f->_ligatures_disabled = x;
undump_int(x); f->_pdf_font_num = x;
undump_int(x); f->_pdf_font_attr = x;
}
@@ -1729,10 +1733,10 @@ void undump_font(int f)
undump_things(*math_param_base(f), (font_math_params(f) + 1));
}
/*tex stack size 1, default item value 0 */
- font_tables[f]->characters = new_sa_tree(1, 1, sa_value);
+ font_tables[f]->_characters = new_sa_tree(1, 1, sa_value);
ci = xcalloc(1, sizeof(charinfo));
set_charinfo_name(ci, xstrdup(".notdef"));
- font_tables[f]->charinfo = ci;
+ font_tables[f]->_charinfo = ci;
undump_int(x);
if (x) {
/*tex left boundary */