mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-26 10:08:06 +02:00
Implements vertical writing
This commit is contained in:
parent
4247339d28
commit
c5b8ee6a91
9 changed files with 112 additions and 29 deletions
|
@ -796,7 +796,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||
} // switch
|
||||
|
||||
if (chunk !== '') {
|
||||
bidiTexts.push(PDFJS.bidi(chunk, -1));
|
||||
var bidiText = PDFJS.bidi(chunk, -1, font.vertical);
|
||||
bidiTexts.push(bidiText);
|
||||
|
||||
chunk = '';
|
||||
}
|
||||
|
@ -831,10 +832,6 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||
};
|
||||
}
|
||||
|
||||
var cidEncoding = baseDict.get('Encoding');
|
||||
if (isName(cidEncoding))
|
||||
properties.cidEncoding = cidEncoding.name;
|
||||
|
||||
var cidToGidMap = dict.get('CIDToGIDMap');
|
||||
if (isStream(cidToGidMap))
|
||||
properties.cidToGidMap = this.readCidToGidMap(cidToGidMap);
|
||||
|
@ -1031,6 +1028,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||
properties) {
|
||||
var glyphsWidths = [];
|
||||
var defaultWidth = 0;
|
||||
var glyphsVMetrics = [];
|
||||
var defaultVMetrics;
|
||||
if (properties.composite) {
|
||||
defaultWidth = dict.get('DW') || 1000;
|
||||
|
||||
|
@ -1049,6 +1048,26 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (properties.vertical) {
|
||||
var vmetrics = dict.get('DW2') || [880, -1000];
|
||||
defaultVMetrics = [vmetrics[1], vmetrics[1] / 2, vmetrics[0]];
|
||||
vmetrics = dict.get('W2');
|
||||
if (vmetrics) {
|
||||
for (var i = 0, ii = vmetrics.length; i < ii; i++) {
|
||||
var start = vmetrics[i++];
|
||||
var code = xref.fetchIfRef(vmetrics[i]);
|
||||
if (isArray(code)) {
|
||||
for (var j = 0, jj = code.length; j < jj; j++)
|
||||
glyphsVMetrics[start++] = [code[j++], code[j++], code[j]];
|
||||
} else {
|
||||
var vmetric = [vmetrics[++i], vmetrics[++i], vmetrics[++i]];
|
||||
for (var j = start; j <= code; j++)
|
||||
glyphsVMetrics[j] = vmetric;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
var firstChar = properties.firstChar;
|
||||
var widths = dict.get('Widths');
|
||||
|
@ -1089,6 +1108,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||
|
||||
properties.defaultWidth = defaultWidth;
|
||||
properties.widths = glyphsWidths;
|
||||
properties.defaultVMetrics = defaultVMetrics;
|
||||
properties.vmetrics = glyphsVMetrics;
|
||||
},
|
||||
|
||||
isSerifFont: function PartialEvaluator_isSerifFont(baseFontName) {
|
||||
|
@ -1260,6 +1281,14 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||
italicAngle: descriptor.get('ItalicAngle'),
|
||||
coded: false
|
||||
};
|
||||
|
||||
if (composite) {
|
||||
var cidEncoding = baseDict.get('Encoding');
|
||||
if (isName(cidEncoding)) {
|
||||
properties.cidEncoding = cidEncoding.name;
|
||||
properties.vertical = /-V$/.test(cidEncoding.name);
|
||||
}
|
||||
}
|
||||
this.extractWidths(dict, xref, descriptor, properties);
|
||||
this.extractDataStructures(dict, baseDict, xref, properties);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue