1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
--- src/gdevpdff.c.org 2003-01-17 09:49:02.000000000 +0900
+++ src/gdevpdff.c 2003-09-21 05:08:36.000000000 +0900
@@ -276,6 +276,11 @@
const byte *chars = font->font_name.chars;
uint size = font->font_name.size;
+ /* CIDFonts has null string in font_name, key_name is used */
+ if (0 == size) {
+ chars = font->key_name.chars;
+ size = font->key_name.size;
+ }
/*
* The behavior of Acrobat Distiller changed between 3.0 (PDF 1.2),
* which will never embed the base 14 fonts, and 4.0 (PDF 1.3), which
@@ -720,19 +725,22 @@
same &= ~FONT_SAME_METRICS;
break;
case FONT_EMBED_NO:
- /*
- * Per the PDF 1.3 documentation, there are only 3 BaseEncoding
- * values allowed for non-embedded fonts. Pick one here.
- */
- BaseEncoding =
- ((const gs_font_base *)base_font)->nearest_encoding_index;
- switch (BaseEncoding) {
- default:
- BaseEncoding = ENCODING_INDEX_WINANSI;
- case ENCODING_INDEX_WINANSI:
- case ENCODING_INDEX_MACROMAN:
- case ENCODING_INDEX_MACEXPERT:
- break;
+ if (!(font->FontType == ft_CID_encrypted ||
+ font->FontType == ft_CID_TrueType)) {
+ /*
+ * Per the PDF 1.3 documentation, there are only 3 BaseEncoding
+ * values allowed for non-embedded fonts. Pick one here.
+ */
+ BaseEncoding =
+ ((const gs_font_base *)base_font)->nearest_encoding_index;
+ switch (BaseEncoding) {
+ default:
+ BaseEncoding = ENCODING_INDEX_WINANSI;
+ case ENCODING_INDEX_WINANSI:
+ case ENCODING_INDEX_MACROMAN:
+ case ENCODING_INDEX_MACEXPERT:
+ break;
+ }
}
code = pdf_compute_font_descriptor(pdev, &fdesc, font, NULL);
if (code < 0)
@@ -888,6 +896,7 @@
memcpy(ppf->widths_known, ftemp_widths_known,
sizeof(ftemp_widths_known));
}
+ ppf->embed = embed;
code = pdf_register_font(pdev, font, ppf);
*pppf = ppf;
|