diff options
Diffstat (limited to 'Build/source/texk/lcdf-typetools/lcdf-typetools-src/otftotfm/secondary.hh')
-rw-r--r-- | Build/source/texk/lcdf-typetools/lcdf-typetools-src/otftotfm/secondary.hh | 177 |
1 files changed, 0 insertions, 177 deletions
diff --git a/Build/source/texk/lcdf-typetools/lcdf-typetools-src/otftotfm/secondary.hh b/Build/source/texk/lcdf-typetools/lcdf-typetools-src/otftotfm/secondary.hh deleted file mode 100644 index 1330e9450a8..00000000000 --- a/Build/source/texk/lcdf-typetools/lcdf-typetools-src/otftotfm/secondary.hh +++ /dev/null @@ -1,177 +0,0 @@ -#ifndef OTFTOTFM_SECONDARY_HH -#define OTFTOTFM_SECONDARY_HH -#include <efont/otfcmap.hh> -#include <efont/cff.hh> -#include "setting.hh" -class Metrics; -class Secondary; -class Transform; -namespace Efont { class TrueTypeBoundsCharstringProgram; } - -struct FontInfo { - - const Efont::OpenType::Font *otf; - const Efont::OpenType::Cmap *cmap; - - Efont::Cff *cff_file; - const Efont::Cff::Font *cff; - - const Efont::OpenType::Post *post; - const Efont::OpenType::Name *name; - - FontInfo(const Efont::OpenType::Font *otf, ErrorHandler *); - ~FontInfo(); - - bool ok() const; - - int nglyphs() const { return _nglyphs; } - bool glyph_names(Vector<PermString> &) const; - int glyphid(PermString) const; - const Efont::CharstringProgram *program() const; - int units_per_em() const { - return program()->units_per_em(); - } - - bool is_fixed_pitch() const; - double italic_angle() const; - double x_height(const Transform& font_xform) const; - - void set_is_fixed_pitch(bool is_fixed_pitch) { - _override_is_fixed_pitch = true; - _is_fixed_pitch = is_fixed_pitch; - } - void set_italic_angle(double italic_angle) { - _override_italic_angle = true; - _italic_angle = italic_angle; - } - enum { x_height_auto = 0, x_height_explicit, - x_height_os2, x_height_x }; - void set_x_height(int source, double x_height) { - _override_x_height = source; - _x_height = x_height; - } - - String family_name() const; - String postscript_name() const; - - private: - - int _nglyphs; - mutable Vector<PermString> _glyph_names; - mutable bool _got_glyph_names; - mutable Vector<uint32_t> _unicodes; - mutable Efont::TrueTypeBoundsCharstringProgram *_ttb_program; - bool _override_is_fixed_pitch; - bool _override_italic_angle; - bool _is_fixed_pitch; - uint8_t _override_x_height; - double _italic_angle; - double _x_height; - -}; - -class SettingSet { -public: - inline SettingSet(Secondary* s, Metrics& m); - inline SettingSet& push_back(Setting s); - inline SettingSet& push_back(int op, int x = 0, int y = 0); - inline SettingSet& move(int x, int y = 0); - SettingSet& show(int uni); - inline SettingSet& kernx(bool is_kernx); - inline bool check(); - inline void checkpoint(); - inline Metrics& metrics() const; - inline const Vector<Setting>& settings() const; -private: - Secondary* s_; - Vector<Setting> v_; - int original_size_; - Metrics& metrics_; - int kern_type_; - bool ok_; - typedef Efont::OpenType::Glyph Glyph; -}; - -class Secondary { public: - Secondary(const FontInfo& finfo) : _finfo(finfo), _next(0) { } - virtual ~Secondary(); - void set_next(Secondary *s) { _next = s; } - typedef Efont::OpenType::Glyph Glyph; - bool encode_uni(int code, PermString name, const uint32_t* uni_first, const uint32_t* uni_last, Metrics &metrics, ErrorHandler *errh); - inline bool encode_uni(int code, PermString name, uint32_t uni, Metrics& m, ErrorHandler* errh); - virtual int setting(uint32_t uni, SettingSet&, ErrorHandler *); - protected: - const FontInfo& _finfo; - - friend class SettingSet; - private: - Secondary *_next; -}; - -class T1Secondary : public Secondary { public: - T1Secondary(const FontInfo &, const String &font_name, const String &otf_file_name); - int setting(uint32_t uni, SettingSet&, ErrorHandler *); - private: - String _font_name; - String _otf_file_name; - int _units_per_em; - int _xheight; - int _spacewidth; - enum { J_NODOT = -1031892 /* unlikely value */ }; - int dotlessj_font(Metrics &, ErrorHandler *, Glyph &dj_glyph); -}; - -bool char_bounds(double bounds[4], double& width, const FontInfo &, - const Transform &, uint32_t uni); - -double char_one_bound(const FontInfo &, const Transform &, - int dimen, bool max, double best, int uni, ...); - -inline SettingSet::SettingSet(Secondary* s, Metrics& m) - : s_(s), original_size_(0), metrics_(m), - kern_type_(Setting::KERN), ok_(true) { -} - -inline SettingSet& SettingSet::kernx(bool is_kernx) { - kern_type_ = is_kernx ? Setting::KERNX : Setting::KERN; - return *this; -} - -inline SettingSet& SettingSet::push_back(Setting s) { - if (ok_) - v_.push_back(s); - return *this; -} - -inline SettingSet& SettingSet::push_back(int op, int x, int y) { - return push_back(Setting(op, x, y)); -} - -inline SettingSet& SettingSet::move(int x, int y) { - return push_back(Setting(Setting::MOVE, x, y)); -} - -inline bool SettingSet::check() { - bool ok = ok_; - ok_ = true; - return ok; -} - -inline void SettingSet::checkpoint() { - assert(ok_); - original_size_ = v_.size(); -} - -inline Metrics& SettingSet::metrics() const { - return metrics_; -} - -inline const Vector<Setting>& SettingSet::settings() const { - return v_; -} - -inline bool Secondary::encode_uni(int code, PermString name, uint32_t uni, Metrics& m, ErrorHandler* errh) { - return encode_uni(code, name, &uni, &uni + 1, m, errh); -} - -#endif |