9fa169b13c
of CJK TrueType into PDF, and do not write CIDToGIDMap of NeverEmbed CJK TrueType and Encoding of CIDFont into PDF. PR: ports/62078 Submitted by: KOMATSU Shinichiro <koma2 at jiro dot c dot u-tokyo dot ac dot jp> Reviewed by: KATO Tsuguru <jungle at m8 dot dion dot ne dot jp>
60 lines
2 KiB
C
60 lines
2 KiB
C
--- src/gdevpdfw.c.org 2003-01-17 09:49:02.000000000 +0900
|
|
+++ src/gdevpdfw.c 2003-09-25 17:50:54.000000000 +0900
|
|
@@ -348,18 +348,19 @@
|
|
/* Use the most common width as DW. */
|
|
|
|
{
|
|
- ushort counts[1001];
|
|
+ ushort counts[1500*2]; /* histogram of (-1500..1500) */
|
|
int dw_count = 0, i;
|
|
|
|
memset(counts, 0, sizeof(counts));
|
|
while (!psf_enumerate_glyphs_next(&genum, &glyph)) {
|
|
- int width = ppf->Widths[glyph - gs_min_cid_glyph];
|
|
+ int cid = glyph - gs_min_cid_glyph;
|
|
+ int width = ppf->Widths[cid];
|
|
|
|
- counts[min(width, countof(counts) - 1)]++;
|
|
+ counts[max(0,min(width+countof(counts)/2,countof(counts)-1))]++;
|
|
}
|
|
- for (i = 0; i < countof(counts); ++i)
|
|
+ for (i = 0; i < countof(counts); i++)
|
|
if (counts[i] > dw_count)
|
|
- dw = i, dw_count = counts[i];
|
|
+ dw = i - countof(counts)/2, dw_count = counts[i];
|
|
if (dw != 0)
|
|
pprintd1(s, "/DW %d\n", dw);
|
|
}
|
|
@@ -496,14 +497,16 @@
|
|
if (pdf_has_subset_prefix(chars, size))
|
|
chars += SUBSET_PREFIX_SIZE, size -= SUBSET_PREFIX_SIZE;
|
|
pdf_put_name(pdev, chars, size);
|
|
- if (pef->sub_font_type == ft_CID_encrypted &&
|
|
+ if ((pef->sub_font_type == ft_CID_encrypted ||
|
|
+ pef->sub_font_type == ft_CID_TrueType) &&
|
|
pef->cmapname[0] == '/'
|
|
) {
|
|
stream_putc(s, '-');
|
|
pdf_put_name_chars(pdev, (const byte*) (pef->cmapname + 1),
|
|
strlen(pef->cmapname + 1));
|
|
}
|
|
- pprints1(s, "/Encoding %s", pef->cmapname);
|
|
+ pprints1(s, (pef->cmapname[0] == '/') ? "/Encoding%s" : "/Encoding %s",
|
|
+ pef->cmapname);
|
|
pprintld1(s, "/DescendantFonts[%ld 0 R]",
|
|
pdf_resource_id((const pdf_resource_t *)pef->DescendantFont));
|
|
write_Widths = 0;
|
|
@@ -563,8 +566,10 @@
|
|
break;
|
|
case -1:
|
|
pdf_write_CIDFont_widths(pdev, pef);
|
|
- if (pef->FontType == ft_CID_TrueType)
|
|
- pdf_write_CIDToGIDMap(pdev, pef, &cidmap_id);
|
|
+ if (pef->FontType == ft_CID_TrueType) {
|
|
+ if (pef->embed != FONT_EMBED_NO)
|
|
+ pdf_write_CIDToGIDMap(pdev, pef, &cidmap_id);
|
|
+ }
|
|
break;
|
|
}
|
|
if (pef->Differences) {
|
|
|