summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/xetexdir/XeTeX_mac.c
diff options
context:
space:
mode:
authorJonathan Kew <jfkthame@googlemail.com>2008-03-27 09:58:47 +0000
committerJonathan Kew <jfkthame@googlemail.com>2008-03-27 09:58:47 +0000
commit194899d8a5ee8f12d82f140c728e1f9dad6c1d04 (patch)
treebb6b4ec379c4b0d0bd6716c2b0e452d160957085 /Build/source/texk/web2c/xetexdir/XeTeX_mac.c
parent8fa331c4a7ed20194a81c2a9c5a9511ca2ab66dd (diff)
merge xetex updates (r.632) - embolden, OT math fontdimens
git-svn-id: svn://tug.org/texlive/trunk@7185 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/xetexdir/XeTeX_mac.c')
-rw-r--r--Build/source/texk/web2c/xetexdir/XeTeX_mac.c71
1 files changed, 20 insertions, 51 deletions
diff --git a/Build/source/texk/web2c/xetexdir/XeTeX_mac.c b/Build/source/texk/web2c/xetexdir/XeTeX_mac.c
index 7cbf43bedc4..e9a728ecb85 100644
--- a/Build/source/texk/web2c/xetexdir/XeTeX_mac.c
+++ b/Build/source/texk/web2c/xetexdir/XeTeX_mac.c
@@ -649,8 +649,11 @@ loadAATfont(ATSFontRef fontRef, long scaled_size, const char* cp1)
ATSUFontID fontID = FMGetFontFromATSFontRef(fontRef);
ATSUStyle style = 0;
OSStatus status = ATSUCreateStyle(&style);
- double extend = 1.0;
- double slant = 0.0;
+ float extend = 1.0;
+ float slant = 0.0;
+ float embolden = 0.0;
+ float letterspace = 0.0;
+ int i;
if (status == noErr) {
UInt32 rgbValue;
@@ -796,46 +799,11 @@ loadAATfont(ATSFontRef fontRef, long scaled_size, const char* cp1)
// didn't find feature or variation, try other options....
- if (strncmp(cp1, "mapping", 7) == 0) {
- cp3 = cp1 + 7;
- if (*cp3 != '=')
- goto bad_option;
- loadedfontmapping = load_mapping_file(cp3 + 1, cp2);
- goto next_option;
- }
-
- if (strncmp(cp1, "extend", 6) == 0) {
- cp3 = cp1 + 6;
- if (*cp3 != '=')
- goto bad_option;
- ++cp3;
- extend = read_double(&cp3);
- goto next_option;
- }
-
- if (strncmp(cp1, "slant", 5) == 0) {
- cp3 = cp1 + 5;
- if (*cp3 != '=')
- goto bad_option;
- ++cp3;
- slant = read_double(&cp3);
- goto next_option;
- }
-
- if (strncmp(cp1, "color", 5) == 0) {
- const char* s;
- cp3 = cp1 + 5;
- if (*cp3 != '=')
- goto bad_option;
- ++cp3;
- s = cp3;
- rgbValue = read_rgb_a(&cp3);
- if ((cp3 == s+6) || (cp3 == s+8))
- loadedfontflags |= FONT_FLAGS_COLORED;
- else
- goto bad_option;
+ i = readCommonFeatures(cp1, cp2, &extend, &slant, &embolden, &letterspace, &rgbValue);
+ if (i == 1)
goto next_option;
- }
+ else if (i == -1)
+ goto bad_option;
if (strncmp(cp1, "tracking", 8) == 0) {
cp3 = cp1 + 8;
@@ -847,16 +815,6 @@ loadAATfont(ATSFontRef fontRef, long scaled_size, const char* cp1)
goto next_option;
}
- if (strncmp(cp1, "letterspace", 11) == 0) {
- cp3 = cp1 + 11;
- if (*cp3 != '=')
- goto bad_option;
- ++cp3;
- double val = read_double(&cp3);
- loadedfontletterspace = (val / 100.0) * scaled_size;
- goto next_option;
- }
-
bad_option:
// not a name=value pair, or not recognized....
// check for plain "vertical" before complaining
@@ -918,6 +876,17 @@ loadAATfont(ATSFontRef fontRef, long scaled_size, const char* cp1)
ATSUSetAttributes(style, 1, tags, sizes, attrs);
}
+ if (embolden != 0.0) {
+ embolden = embolden * Fix2X(scaled_size) / 100.0;
+ tags[0] = kXeTeXEmboldenTag;
+ sizes[0] = sizeof(float);
+ attrs[0] = &embolden;
+ ATSUSetAttributes(style, 1, tags, sizes, attrs);
+ }
+
+ if (letterspace != 0.0)
+ loadedfontletterspace = (letterspace / 100.0) * scaled_size;
+
free((char*)featureTypes);
free((char*)selectorValues);
free((char*)axes);