freebsd-ports/x11-fonts/ttmkfdir/files/patch-ttf.cpp
Ion-Mihai Tetcu 6e89799a34 - Update to 3.0.9
- Pass maintainership to submitter

Added file(s):
- files/patch-builtin.cpp
- files/patch-directory.cpp
- files/patch-encoding.l
- files/patch-ttf.cpp
- files/patch-util.h

This release contains additional patches and impovements from Redhat and net:
- Compressed fonts support via Zlib
- Improve performance when checking if a font has a mapping present
- Base font file selection on the magic at the start of the file
- iso8859-13 support
- Default read system encodings.dir instead of the one in current directory
- A lot of bugfixes

PR:		ports/100520
Submitted by:	Stanislav Sedov <ssedov@mbsd.msk.ru>
2006-07-19 11:06:15 +00:00

46 lines
1.5 KiB
C++

--- ttf.cpp.orig Wed Jul 19 11:13:20 2006
+++ ttf.cpp Wed Jul 19 11:22:41 2006
@@ -51,20 +51,27 @@
bool
Face::MappingPresent (int cmapidx, NumericMapping *m, int enc_size, int start_code, bool enc_comp)
{
- int idx, missing = 0;
+ int idx;
+ unsigned int missing = 0, bail_at, msize;
+
FT_Set_Charmap (face, face->charmaps[cmapidx]);
- for (unsigned int i = start_code; i < m->size (); i++) {
+ msize = m->size();
+ if (enc_size <= 256) {
+ bail_at = int (cmdline::instance()->option ("max-missing"));
+ } else {
+ bail_at = ((int (cmdline::instance()->option ("max-missing-percentage"))
+& enc_comp)*enc_size)/100;
+ }
+
+ for (unsigned int i = start_code; i < msize && missing < bail_at; i++) {
if ((*m)[i] < 0)
continue;
if ((idx = FT_Get_Char_Index (face, (*m)[i])) == 0)
missing++;
}
- if (enc_size <= 256) {
- return (missing <= int (cmdline::instance()->option ("max-missing")));
- } else {
- return ((100 * missing/enc_size) <= int (cmdline::instance()->option ("max-missing-percentage")) & enc_comp);
- }
+
+ return missing < bail_at;
}
Face::Face (const std::string &filename)
@@ -239,7 +246,7 @@
for (i = 0; i < n; i++) {
if ((fterror = FT_Get_Sfnt_Name (face, i, &NamePtr)) != FT_Err_Ok) {
std::cout << "Warning: Can't SFNT name : " << FileName << "(" << fterror << ")" << std::endl;
- return;
+ return NULL;
};
platform = NamePtr.platform_id;
encoding = NamePtr.encoding_id;