yes, it is compilable via command line. may be need to modify the relative freetype path.
Johnson Y. Yan 发件人: suzuki toshiya 发送时间: 2012-06-13 14:32:16 收件人: Johnson Y. Yan 抄送: freetype-devel 主题: Re: [ft-devel] PDF text rendering error This is compilable via command line? Johnson Y. Yan wrote: > Toshiya-san, > please check again, thanks. > > Johnson Y. Yan > > > > 发件人: suzuki toshiya > 发送时间: 2012-06-13 00:18:46 > 收件人: Johnson Y. Yan > 抄送: freetype-devel > 主题: Re: [ft-devel] PDF text rendering error > > Hmm. Can you post the C source code as an attachment? > Yet I've not checked, but I'm not sure your code is compilable > because no header files are included. If you make the compiler > include the header files by compiler flags written in project file, > please post project file too. > Regards, > mpsuzuki > Johnson Y. Yan wrote: >> Toshiya-san, >> thanks for your patience, >> I build freetype 2.4.9 with vc6,I merged your patch and make sure this is a >> tricky font. >> I can debug into: >> >> tt_check_trickyness( FT_Face face ) >> { >> if ( !face ) >> return FALSE; >> /* For first, check the face name for quick check. */ >> if ( face->family_name && >> tt_check_trickyness_family( face->family_name ) ) >> return TRUE; >> /* Type42 fonts may lack `name' tables, we thus try to identify */ >> /* tricky fonts by checking the checksums of Type42-persistent */ >> /* sfnt tables (`cvt', `fpgm', and `prep'). */ >> if ( tt_check_trickyness_sfnt_ids( (TT_Face)face ) ) >> return TRUE; >> return FALSE; >> } >> >> and tt_check_trickyness_sfnt_ids return TRUE; >> but render result still error(I sent in 11/6/2012 ).I don't know what reason >> is. >> >> please see my test code, you can use the embeded font 1_BKLGIB+FA.ttf i sent >> yesterday to test: >> >> extern "C" int g_bRecordBI = 0; >> DWORD gid = 2134; >> >> void CTestDlg::OnTestFreetype() >> { >> UpdateData(); >> CModuleMgr mm; >> CString csFilter(_T("OpenType (*.ttf,*.ttc,*.otf)|*.ttf;*.ttc;*.otf|" >> "Type1 (*.pfa,*.pfb)|*.pfa;*.pfb|" >> "CFF (*.cff)|*.cff|" >> "All files (*.*)|*.*||")); >> CFileDialog fd(TRUE, NULL, NULL, >> OFN_FILEMUSTEXIST|OFN_LONGNAMES|OFN_PATHMUSTEXIST, csFilter, this); >> if (fd.DoModal() == IDOK){ >> FT_Library library; >> FT_Init_FreeType(&library); >> CString csFile = fd.GetPathName(); >> IFileRead *pFileRead = CreateFileRead((LPCTSTR)csFile); >> DWORD dwFileSize = (DWORD)pFileRead->GetSize(); >> BYTE* pBuffer = Alloc(BYTE, dwFileSize); >> pFileRead->ReadBlock(pBuffer, 0, dwFileSize); >> pFileRead->Release(); >> FT_Face face; >> int error = FT_New_Memory_Face(library, pBuffer, dwFileSize, 0, &face); >> ASSERT(error == 0); >> error = FT_Set_Pixel_Sizes(face, 0, 64); >> ASSERT(error == 0); >> FT_Matrix matrix; >> matrix.xx = (long)(32.f /64 * 65536);//22215;//32.f /64 * 65536; >> matrix.xy = 0; >> matrix.yx = 0; >> matrix.yy = (long)(32.f /64 * 65536);//23616;//32.f /64 * 65536; >> FT_Set_Transform(face, &matrix, NULL); >> ASSERT(error == 0); >> int load_flags = FT_LOAD_NO_BITMAP ; >> DEBUG1("CTestDlg::OnTestFreetype -- Start Load Glyph >> ----------------------------------"); >> g_bRecordBI = 1; // Change flag >> error = FT_Load_Glyph(face, gid, load_flags); >> g_bRecordBI = 0; >> DEBUG1("CTestDlg::OnTestFreetype -- End Load Glyph >> ----------------------------------"); >> ASSERT(error == 0); >> int render_mode = FT_RENDER_MODE_NORMAL; >> error = FT_Render_Glyph(face, render_mode); >> ASSERT(error == 0); >> FT_GlyphSlot slot = face->glyph; >> int left = slot->bitmap_left; >> int top = slot->bitmap_top; >> int pixel_width = slot->bitmap.width; >> int pixel_height = slot->bitmap.rows; >> int stride = slot->bitmap.pitch; >> int type = slot->bitmap.pixel_mode; >> BYTE*buffer = slot->bitmap.buffer; >> CFX_DIBitmap bitmap; >> BOOL ret = bitmap.Create(pixel_width, pixel_height, FXDIB_8bppRgb); >> ASSERT(ret); >> int row, col; >> for (row = 0; row < pixel_height; row ++) { >> BYTE* pDestBuf = (BYTE*)bitmap.GetScanline(row); >> BYTE* pSrcBuf= buffer+row*stride; >> for (col = 0; col < pixel_width; col ++) { >> *pDestBuf++ = ~*pSrcBuf++; >> } >> } >> CDC *pDC = GetDC(); >> CFX_WindowsDevice wd(pDC->GetSafeHdc()); >> wd.SetDIBits(&bitmap, 0, 0); >> ReleaseDC(pDC); >> FT_Done_Face(face); >> FT_Done_FreeType(library); >> if (pBuffer) Free(pBuffer); >> } >> } >> >> >> >> Johnson Y. Yan >> >> >> >> 发件人: suzuki toshiya >> 发送时间: 2012-06-12 18:33:24 >> 收件人: Johnson Y. Yan >> 抄送: freetype-devel >> 主题: Re: [ft-devel] PDF text rendering error >> >> OK, please let us work with same testing program. >> I guess you're working for the proprietary software >> and you cannot disclose the source to me (and I think >> I don't have appropriate developer environment even >> if you can disclose the source). >> Thus, I will make a patch generating many trace >> messages, and a small CUI program just checking >> if the font is found to be tricky. Is it acceptable? >> Please check if you can build FT2 library with >> debug/trace functions, while I'm writing a patch >> for debugging. >> Regards, >> mpsuzuki >> Johnson Y. Yan wrote: >>> Toshiya-san, >>> I apply your patch, but still render error, : (. >>> If the way i call the function is wrong? >>> FT_Load_Glyph(FtFace, gid, FT_LOAD_NO_BITMAP). >>> >>> Johnson Y. Yan >>> >>> >>> >>> 发件人: suzuki toshiya >>> 发送时间: 2012-06-11 16:38:11 >>> 收件人: Johnson Y. Yan >>> 抄送: freetype-devel >>> 主题: Re: [ft-devel] PDF text rendering error >>> >>> Attached is my proposal to fix this issue, please try. >>> In my case (Debian GNU/Linux xpdf-3.02-11), using the >>> patched freetype library by LD_PRELOAD, xpdf shows >>> readable result (without patch, the result is unreadable). >>> Regards, >>> mpsuzuki >>> suzuki toshiya wrote: >>>> Johnson Y. Yan wrote (2012/06/11 16:03): >>>>> Werner and Toshiya-san, >>>>> >>>>> I put the font as a tricky font to deal with. >>>>> static const char trick_names[TRICK_NAMES_COUNT] >>>>> [TRICK_NAMES_MAX_CHARACTERS + 1] = >>>>> { >>>>> "DFKaiSho-SB", /* dfkaisb.ttf */ >>>>> "DFKaiShu", >>>>> "DFKai-SB", /* kaiu.ttf */ >>>>> "HuaTianKaiTi?", /* htkt2.ttf */ >>>>> "HuaTianSongTi?", /* htst3.ttf */ >>>>> "MingLiU", /* mingliu.ttf & mingliu.ttc */ >>>>> "PMingLiU", /* mingliu.ttc */ >>>>> "MingLi43", /* mingli.ttf */ >>>>> "BKLGIB+FA" ---------------------------------------- this is the >>>>> embeded font in th document. >>>>> }; >>>>> it still render error. . >>>> Including the randomization prefix to the tricky font name list is bad >>>> idea. >>>> >>>>> I opened the embeded font use font lab, found the gid = 2134 is like >>>>> this, please see the attach bitmap, >>>>> some of lines form a 0 area areas, then fill the area(have no area), >>>>> Does freetype made special processing? >>>>> >>>>> >>>>> >>>>> Johnson Y. Yan >>>>> >>>>> >>>>> >>>>> 发件人: Werner LEMBERG >>>>> 发送时间: 2012-06-11 12:55:42 >>>>> 收件人: yinsen_yan >>>>> 抄送: freetype-devel; mpsuzuki >>>>> 主题: Re: PDF text rendering error >>>>> >>>>>> Do you mean the font must be rendered use >>>>>> TT_CONFIG_OPTION_BYTECODE_INTERPRETER? >>>>> No, the FreeType *library* must be built with it: Edit ftoption.h to >>>>> set this flag, then recompile. >>>>> Additionally, hinting must be enabled for this font, this is, >>>>> FT_LOAD_NO_SCALE doesn't work here. >>>>> Normally, those steps are (more or less) handled automatically by >>>>> FreeType, since we maintain a list of `tricky' font like the one you >>>>> have encountered in the PDF; see file `ttobjs.c'. The subsetted font >>>>> in question, however, which identifies itself as >>>>> BKLGIB+FA-RoundGothicB >>>>> FA 丸ゴシックB and FA-RoundGothicB are trademarks of NEC Office >>>>> Systems,Ltd. >>>>> isn't in this list; for the NEC FA fonts (and others), a second >>>>> mechanism is used which doesn't work with subsetted fonts. >>>>> Toshiya-san, any ideas? >>>>> Werner >>>> _______________________________________________ >>>> Freetype-devel mailing list >>>> Freetype-devel@nongnu.org >>>> https://lists.nongnu.org/mailman/listinfo/freetype-devel
_______________________________________________ Freetype-devel mailing list Freetype-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/freetype-devel