Coverage Report

Created: 2024-06-09 05:15

/src/harfbuzz/src/hb-cff-interp-cs-common.hh
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright © 2018 Adobe Inc.
3
 *
4
 *  This is part of HarfBuzz, a text shaping library.
5
 *
6
 * Permission is hereby granted, without written agreement and without
7
 * license or royalty fees, to use, copy, modify, and distribute this
8
 * software and its documentation for any purpose, provided that the
9
 * above copyright notice and the following two paragraphs appear in
10
 * all copies of this software.
11
 *
12
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16
 * DAMAGE.
17
 *
18
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
21
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23
 *
24
 * Adobe Author(s): Michiharu Ariza
25
 */
26
#ifndef HB_CFF_INTERP_CS_COMMON_HH
27
#define HB_CFF_INTERP_CS_COMMON_HH
28
29
#include "hb.hh"
30
#include "hb-cff-interp-common.hh"
31
32
namespace CFF {
33
34
using namespace OT;
35
36
enum cs_type_t {
37
  CSType_CharString,
38
  CSType_GlobalSubr,
39
  CSType_LocalSubr
40
};
41
42
struct call_context_t
43
{
44
  void init (const byte_str_ref_t substr_=byte_str_ref_t (), cs_type_t type_=CSType_CharString, unsigned int subr_num_=0)
45
1.50M
  {
46
1.50M
    str_ref = substr_;
47
1.50M
    type = type_;
48
1.50M
    subr_num = subr_num_;
49
1.50M
  }
50
51
0
  void fini () {}
52
53
  byte_str_ref_t  str_ref;
54
  cs_type_t   type;
55
  unsigned int    subr_num;
56
};
57
58
/* call stack */
59
const unsigned int kMaxCallLimit = 10;
60
struct call_stack_t : cff_stack_t<call_context_t, kMaxCallLimit> {};
61
62
template <typename SUBRS>
63
struct biased_subrs_t
64
{
65
  void init (const SUBRS *subrs_)
66
828k
  {
67
828k
    subrs = subrs_;
68
828k
    unsigned int  nSubrs = get_count ();
69
828k
    if (nSubrs < 1240)
70
825k
      bias = 107;
71
3.50k
    else if (nSubrs < 33900)
72
3.49k
      bias = 1131;
73
13
    else
74
13
      bias = 32768;
75
828k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned short, 2u> > >::init(CFF::Subrs<OT::IntType<unsigned short, 2u> > const*)
Line
Count
Source
66
205k
  {
67
205k
    subrs = subrs_;
68
205k
    unsigned int  nSubrs = get_count ();
69
205k
    if (nSubrs < 1240)
70
203k
      bias = 107;
71
2.35k
    else if (nSubrs < 33900)
72
2.34k
      bias = 1131;
73
11
    else
74
11
      bias = 32768;
75
205k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned int, 4u> > >::init(CFF::Subrs<OT::IntType<unsigned int, 4u> > const*)
Line
Count
Source
66
623k
  {
67
623k
    subrs = subrs_;
68
623k
    unsigned int  nSubrs = get_count ();
69
623k
    if (nSubrs < 1240)
70
622k
      bias = 107;
71
1.15k
    else if (nSubrs < 33900)
72
1.14k
      bias = 1131;
73
2
    else
74
2
      bias = 32768;
75
623k
  }
76
77
828k
  void fini () {}
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned short, 2u> > >::fini()
Line
Count
Source
77
205k
  void fini () {}
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned int, 4u> > >::fini()
Line
Count
Source
77
623k
  void fini () {}
78
79
1.96M
  unsigned int get_count () const { return subrs ? subrs->count : 0; }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned short, 2u> > >::get_count() const
Line
Count
Source
79
392k
  unsigned int get_count () const { return subrs ? subrs->count : 0; }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned int, 4u> > >::get_count() const
Line
Count
Source
79
1.57M
  unsigned int get_count () const { return subrs ? subrs->count : 0; }
80
1.14M
  unsigned int get_bias () const  { return bias; }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned short, 2u> > >::get_bias() const
Line
Count
Source
80
187k
  unsigned int get_bias () const  { return bias; }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned int, 4u> > >::get_bias() const
Line
Count
Source
80
953k
  unsigned int get_bias () const  { return bias; }
81
82
  hb_ubytes_t operator [] (unsigned int index) const
83
1.09M
  {
84
1.09M
    if (unlikely (!subrs || index >= subrs->count))
85
0
      return hb_ubytes_t ();
86
1.09M
    else
87
1.09M
      return (*subrs)[index];
88
1.09M
  }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned short, 2u> > >::operator[](unsigned int) const
Line
Count
Source
83
179k
  {
84
179k
    if (unlikely (!subrs || index >= subrs->count))
85
0
      return hb_ubytes_t ();
86
179k
    else
87
179k
      return (*subrs)[index];
88
179k
  }
CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned int, 4u> > >::operator[](unsigned int) const
Line
Count
Source
83
910k
  {
84
910k
    if (unlikely (!subrs || index >= subrs->count))
85
0
      return hb_ubytes_t ();
86
910k
    else
87
910k
      return (*subrs)[index];
88
910k
  }
89
90
  protected:
91
  unsigned int  bias;
92
  const SUBRS   *subrs;
93
};
94
95
struct point_t
96
{
97
  void set_int (int _x, int _y)
98
2.08M
  {
99
2.08M
    x.set_int (_x);
100
2.08M
    y.set_int (_y);
101
2.08M
  }
102
103
15.2M
  void move_x (const number_t &dx) { x += dx; }
104
14.3M
  void move_y (const number_t &dy) { y += dy; }
105
10.3M
  void move (const number_t &dx, const number_t &dy) { move_x (dx); move_y (dy); }
106
46.7k
  void move (const point_t &d) { move_x (d.x); move_y (d.y); }
107
108
  number_t  x;
109
  number_t  y;
110
};
111
112
template <typename ARG, typename SUBRS>
113
struct cs_interp_env_t : interp_env_t<ARG>
114
{
115
  cs_interp_env_t (const hb_ubytes_t &str, const SUBRS *globalSubrs_, const SUBRS *localSubrs_) :
116
    interp_env_t<ARG> (str)
117
414k
  {
118
414k
    context.init (str, CSType_CharString);
119
414k
    seen_moveto = true;
120
414k
    seen_hintmask = false;
121
414k
    hstem_count = 0;
122
414k
    vstem_count = 0;
123
414k
    hintmask_size = 0;
124
414k
    pt.set_int (0, 0);
125
414k
    globalSubrs.init (globalSubrs_);
126
414k
    localSubrs.init (localSubrs_);
127
414k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::cs_interp_env_t(hb_array_t<unsigned char const> const&, CFF::Subrs<OT::IntType<unsigned short, 2u> > const*, CFF::Subrs<OT::IntType<unsigned short, 2u> > const*)
Line
Count
Source
117
102k
  {
118
102k
    context.init (str, CSType_CharString);
119
102k
    seen_moveto = true;
120
102k
    seen_hintmask = false;
121
102k
    hstem_count = 0;
122
102k
    vstem_count = 0;
123
102k
    hintmask_size = 0;
124
102k
    pt.set_int (0, 0);
125
102k
    globalSubrs.init (globalSubrs_);
126
102k
    localSubrs.init (localSubrs_);
127
102k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::cs_interp_env_t(hb_array_t<unsigned char const> const&, CFF::Subrs<OT::IntType<unsigned int, 4u> > const*, CFF::Subrs<OT::IntType<unsigned int, 4u> > const*)
Line
Count
Source
117
311k
  {
118
311k
    context.init (str, CSType_CharString);
119
311k
    seen_moveto = true;
120
311k
    seen_hintmask = false;
121
311k
    hstem_count = 0;
122
311k
    vstem_count = 0;
123
311k
    hintmask_size = 0;
124
311k
    pt.set_int (0, 0);
125
311k
    globalSubrs.init (globalSubrs_);
126
311k
    localSubrs.init (localSubrs_);
127
311k
  }
128
  ~cs_interp_env_t ()
129
414k
  {
130
414k
    globalSubrs.fini ();
131
414k
    localSubrs.fini ();
132
414k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::~cs_interp_env_t()
Line
Count
Source
129
102k
  {
130
102k
    globalSubrs.fini ();
131
102k
    localSubrs.fini ();
132
102k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::~cs_interp_env_t()
Line
Count
Source
129
311k
  {
130
311k
    globalSubrs.fini ();
131
311k
    localSubrs.fini ();
132
311k
  }
133
134
  bool in_error () const
135
45.3M
  {
136
45.3M
    return callStack.in_error () || SUPER::in_error ();
137
45.3M
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::in_error() const
Line
Count
Source
135
10.4M
  {
136
10.4M
    return callStack.in_error () || SUPER::in_error ();
137
10.4M
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::in_error() const
Line
Count
Source
135
34.8M
  {
136
34.8M
    return callStack.in_error () || SUPER::in_error ();
137
34.8M
  }
138
139
  bool pop_subr_num (const biased_subrs_t<SUBRS>& biasedSubrs, unsigned int &subr_num)
140
1.14M
  {
141
1.14M
    subr_num = 0;
142
1.14M
    int n = SUPER::argStack.pop_int ();
143
1.14M
    n += biasedSubrs.get_bias ();
144
1.14M
    if (unlikely ((n < 0) || ((unsigned int)n >= biasedSubrs.get_count ())))
145
39.0k
      return false;
146
147
1.10M
    subr_num = (unsigned int)n;
148
1.10M
    return true;
149
1.14M
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::pop_subr_num(CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned short, 2u> > > const&, unsigned int&)
Line
Count
Source
140
187k
  {
141
187k
    subr_num = 0;
142
187k
    int n = SUPER::argStack.pop_int ();
143
187k
    n += biasedSubrs.get_bias ();
144
187k
    if (unlikely ((n < 0) || ((unsigned int)n >= biasedSubrs.get_count ())))
145
2.82k
      return false;
146
147
184k
    subr_num = (unsigned int)n;
148
184k
    return true;
149
187k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::pop_subr_num(CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned int, 4u> > > const&, unsigned int&)
Line
Count
Source
140
953k
  {
141
953k
    subr_num = 0;
142
953k
    int n = SUPER::argStack.pop_int ();
143
953k
    n += biasedSubrs.get_bias ();
144
953k
    if (unlikely ((n < 0) || ((unsigned int)n >= biasedSubrs.get_count ())))
145
36.2k
      return false;
146
147
917k
    subr_num = (unsigned int)n;
148
917k
    return true;
149
953k
  }
150
151
  void call_subr (const biased_subrs_t<SUBRS>& biasedSubrs, cs_type_t type)
152
1.14M
  {
153
1.14M
    unsigned int subr_num = 0;
154
155
1.14M
    if (unlikely (!pop_subr_num (biasedSubrs, subr_num)
156
1.14M
     || callStack.get_count () >= kMaxCallLimit))
157
50.7k
    {
158
50.7k
      SUPER::set_error ();
159
50.7k
      return;
160
50.7k
    }
161
1.09M
    context.str_ref = SUPER::str_ref;
162
1.09M
    callStack.push (context);
163
164
1.09M
    context.init ( biasedSubrs[subr_num], type, subr_num);
165
1.09M
    SUPER::str_ref = context.str_ref;
166
1.09M
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::call_subr(CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned short, 2u> > > const&, CFF::cs_type_t)
Line
Count
Source
152
187k
  {
153
187k
    unsigned int subr_num = 0;
154
155
187k
    if (unlikely (!pop_subr_num (biasedSubrs, subr_num)
156
187k
     || callStack.get_count () >= kMaxCallLimit))
157
7.67k
    {
158
7.67k
      SUPER::set_error ();
159
7.67k
      return;
160
7.67k
    }
161
179k
    context.str_ref = SUPER::str_ref;
162
179k
    callStack.push (context);
163
164
179k
    context.init ( biasedSubrs[subr_num], type, subr_num);
165
179k
    SUPER::str_ref = context.str_ref;
166
179k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::call_subr(CFF::biased_subrs_t<CFF::Subrs<OT::IntType<unsigned int, 4u> > > const&, CFF::cs_type_t)
Line
Count
Source
152
953k
  {
153
953k
    unsigned int subr_num = 0;
154
155
953k
    if (unlikely (!pop_subr_num (biasedSubrs, subr_num)
156
953k
     || callStack.get_count () >= kMaxCallLimit))
157
43.0k
    {
158
43.0k
      SUPER::set_error ();
159
43.0k
      return;
160
43.0k
    }
161
910k
    context.str_ref = SUPER::str_ref;
162
910k
    callStack.push (context);
163
164
910k
    context.init ( biasedSubrs[subr_num], type, subr_num);
165
910k
    SUPER::str_ref = context.str_ref;
166
910k
  }
167
168
  void return_from_subr ()
169
942k
  {
170
942k
    if (unlikely (SUPER::str_ref.in_error ()))
171
0
      SUPER::set_error ();
172
942k
    context = callStack.pop ();
173
942k
    SUPER::str_ref = context.str_ref;
174
942k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::return_from_subr()
Line
Count
Source
169
114k
  {
170
114k
    if (unlikely (SUPER::str_ref.in_error ()))
171
0
      SUPER::set_error ();
172
114k
    context = callStack.pop ();
173
114k
    SUPER::str_ref = context.str_ref;
174
114k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::return_from_subr()
Line
Count
Source
169
827k
  {
170
827k
    if (unlikely (SUPER::str_ref.in_error ()))
171
0
      SUPER::set_error ();
172
827k
    context = callStack.pop ();
173
827k
    SUPER::str_ref = context.str_ref;
174
827k
  }
175
176
  void determine_hintmask_size ()
177
144k
  {
178
144k
    if (!seen_hintmask)
179
23.2k
    {
180
23.2k
      vstem_count += SUPER::argStack.get_count() / 2;
181
23.2k
      hintmask_size = (hstem_count + vstem_count + 7) >> 3;
182
23.2k
      seen_hintmask = true;
183
23.2k
    }
184
144k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::determine_hintmask_size()
Line
Count
Source
177
57.4k
  {
178
57.4k
    if (!seen_hintmask)
179
9.08k
    {
180
9.08k
      vstem_count += SUPER::argStack.get_count() / 2;
181
9.08k
      hintmask_size = (hstem_count + vstem_count + 7) >> 3;
182
9.08k
      seen_hintmask = true;
183
9.08k
    }
184
57.4k
  }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::determine_hintmask_size()
Line
Count
Source
177
86.9k
  {
178
86.9k
    if (!seen_hintmask)
179
14.1k
    {
180
14.1k
      vstem_count += SUPER::argStack.get_count() / 2;
181
14.1k
      hintmask_size = (hstem_count + vstem_count + 7) >> 3;
182
14.1k
      seen_hintmask = true;
183
14.1k
    }
184
86.9k
  }
185
186
654k
  void set_endchar (bool endchar_flag_) { endchar_flag = endchar_flag_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::set_endchar(bool)
Line
Count
Source
186
180k
  void set_endchar (bool endchar_flag_) { endchar_flag = endchar_flag_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::set_endchar(bool)
Line
Count
Source
186
473k
  void set_endchar (bool endchar_flag_) { endchar_flag = endchar_flag_; }
187
45.1M
  bool is_endchar () const { return endchar_flag; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::is_endchar() const
Line
Count
Source
187
10.4M
  bool is_endchar () const { return endchar_flag; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::is_endchar() const
Line
Count
Source
187
34.7M
  bool is_endchar () const { return endchar_flag; }
188
189
  const number_t &get_x () const { return pt.x; }
190
  const number_t &get_y () const { return pt.y; }
191
13.2M
  const point_t &get_pt () const { return pt; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::get_pt() const
Line
Count
Source
191
3.75M
  const point_t &get_pt () const { return pt; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::get_pt() const
Line
Count
Source
191
9.49M
  const point_t &get_pt () const { return pt; }
192
193
9.26M
  void moveto (const point_t &pt_ ) { pt = pt_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned short, 2u> > >::moveto(CFF::point_t const&)
Line
Count
Source
193
2.39M
  void moveto (const point_t &pt_ ) { pt = pt_; }
CFF::cs_interp_env_t<CFF::number_t, CFF::Subrs<OT::IntType<unsigned int, 4u> > >::moveto(CFF::point_t const&)
Line
Count
Source
193
6.87M
  void moveto (const point_t &pt_ ) { pt = pt_; }
194
195
  public:
196
  call_context_t   context;
197
  bool    endchar_flag;
198
  bool    seen_moveto;
199
  bool    seen_hintmask;
200
201
  unsigned int  hstem_count;
202
  unsigned int  vstem_count;
203
  unsigned int  hintmask_size;
204
  call_stack_t  callStack;
205
  biased_subrs_t<SUBRS>   globalSubrs;
206
  biased_subrs_t<SUBRS>   localSubrs;
207
208
  private:
209
  point_t  pt;
210
211
  typedef interp_env_t<ARG> SUPER;
212
};
213
214
template <typename ENV, typename PARAM>
215
struct path_procs_null_t
216
{
217
0
  static void rmoveto (ENV &env, PARAM& param) {}
218
0
  static void hmoveto (ENV &env, PARAM& param) {}
219
0
  static void vmoveto (ENV &env, PARAM& param) {}
220
0
  static void rlineto (ENV &env, PARAM& param) {}
221
0
  static void hlineto (ENV &env, PARAM& param) {}
222
0
  static void vlineto (ENV &env, PARAM& param) {}
223
0
  static void rrcurveto (ENV &env, PARAM& param) {}
224
0
  static void rcurveline (ENV &env, PARAM& param) {}
225
0
  static void rlinecurve (ENV &env, PARAM& param) {}
226
0
  static void vvcurveto (ENV &env, PARAM& param) {}
227
0
  static void hhcurveto (ENV &env, PARAM& param) {}
228
0
  static void vhcurveto (ENV &env, PARAM& param) {}
229
0
  static void hvcurveto (ENV &env, PARAM& param) {}
230
  static void moveto (ENV &env, PARAM& param, const point_t &pt) {}
231
  static void line (ENV &env, PARAM& param, const point_t &pt1) {}
232
  static void curve (ENV &env, PARAM& param, const point_t &pt1, const point_t &pt2, const point_t &pt3) {}
233
0
  static void hflex (ENV &env, PARAM& param) {}
234
0
  static void flex (ENV &env, PARAM& param) {}
235
0
  static void hflex1 (ENV &env, PARAM& param) {}
236
0
  static void flex1 (ENV &env, PARAM& param) {}
237
};
238
239
template <typename ARG, typename OPSET, typename ENV, typename PARAM, typename PATH=path_procs_null_t<ENV, PARAM>>
240
struct cs_opset_t : opset_t<ARG>
241
{
242
  static void process_op (op_code_t op, ENV &env, PARAM& param)
243
44.6M
  {
244
44.6M
    switch (op) {
245
246
942k
      case OpCode_return:
247
942k
  env.return_from_subr ();
248
942k
  break;
249
161k
      case OpCode_endchar:
250
161k
  OPSET::check_width (op, env, param);
251
161k
  env.set_endchar (true);
252
161k
  OPSET::flush_args_and_op (op, env, param);
253
161k
  break;
254
255
90.1k
      case OpCode_fixedcs:
256
90.1k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
90.1k
  break;
258
259
1.09M
      case OpCode_callsubr:
260
1.09M
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
1.09M
  break;
262
263
45.3k
      case OpCode_callgsubr:
264
45.3k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
45.3k
  break;
266
267
110k
      case OpCode_hstem:
268
171k
      case OpCode_hstemhm:
269
171k
  OPSET::check_width (op, env, param);
270
171k
  OPSET::process_hstem (op, env, param);
271
171k
  break;
272
71.1k
      case OpCode_vstem:
273
103k
      case OpCode_vstemhm:
274
103k
  OPSET::check_width (op, env, param);
275
103k
  OPSET::process_vstem (op, env, param);
276
103k
  break;
277
78.9k
      case OpCode_hintmask:
278
144k
      case OpCode_cntrmask:
279
144k
  OPSET::check_width (op, env, param);
280
144k
  OPSET::process_hintmask (op, env, param);
281
144k
  break;
282
537k
      case OpCode_rmoveto:
283
537k
  OPSET::check_width (op, env, param);
284
537k
  PATH::rmoveto (env, param);
285
537k
  OPSET::process_post_move (op, env, param);
286
537k
  break;
287
104k
      case OpCode_hmoveto:
288
104k
  OPSET::check_width (op, env, param);
289
104k
  PATH::hmoveto (env, param);
290
104k
  OPSET::process_post_move (op, env, param);
291
104k
  break;
292
79.3k
      case OpCode_vmoveto:
293
79.3k
  OPSET::check_width (op, env, param);
294
79.3k
  PATH::vmoveto (env, param);
295
79.3k
  OPSET::process_post_move (op, env, param);
296
79.3k
  break;
297
565k
      case OpCode_rlineto:
298
565k
  PATH::rlineto (env, param);
299
565k
  process_post_path (op, env, param);
300
565k
  break;
301
355k
      case OpCode_hlineto:
302
355k
  PATH::hlineto (env, param);
303
355k
  process_post_path (op, env, param);
304
355k
  break;
305
271k
      case OpCode_vlineto:
306
271k
  PATH::vlineto (env, param);
307
271k
  process_post_path (op, env, param);
308
271k
  break;
309
557k
      case OpCode_rrcurveto:
310
557k
  PATH::rrcurveto (env, param);
311
557k
  process_post_path (op, env, param);
312
557k
  break;
313
283k
      case OpCode_rcurveline:
314
283k
  PATH::rcurveline (env, param);
315
283k
  process_post_path (op, env, param);
316
283k
  break;
317
313k
      case OpCode_rlinecurve:
318
313k
  PATH::rlinecurve (env, param);
319
313k
  process_post_path (op, env, param);
320
313k
  break;
321
246k
      case OpCode_vvcurveto:
322
246k
  PATH::vvcurveto (env, param);
323
246k
  process_post_path (op, env, param);
324
246k
  break;
325
612k
      case OpCode_hhcurveto:
326
612k
  PATH::hhcurveto (env, param);
327
612k
  process_post_path (op, env, param);
328
612k
  break;
329
460k
      case OpCode_vhcurveto:
330
460k
  PATH::vhcurveto (env, param);
331
460k
  process_post_path (op, env, param);
332
460k
  break;
333
576k
      case OpCode_hvcurveto:
334
576k
  PATH::hvcurveto (env, param);
335
576k
  process_post_path (op, env, param);
336
576k
  break;
337
338
1.16k
      case OpCode_hflex:
339
1.16k
  PATH::hflex (env, param);
340
1.16k
  OPSET::process_post_flex (op, env, param);
341
1.16k
  break;
342
343
8.95k
      case OpCode_flex:
344
8.95k
  PATH::flex (env, param);
345
8.95k
  OPSET::process_post_flex (op, env, param);
346
8.95k
  break;
347
348
2.22k
      case OpCode_hflex1:
349
2.22k
  PATH::hflex1 (env, param);
350
2.22k
  OPSET::process_post_flex (op, env, param);
351
2.22k
  break;
352
353
1.50k
      case OpCode_flex1:
354
1.50k
  PATH::flex1 (env, param);
355
1.50k
  OPSET::process_post_flex (op, env, param);
356
1.50k
  break;
357
358
36.8M
      default:
359
36.8M
  SUPER::process_op (op, env);
360
36.8M
  break;
361
44.6M
    }
362
44.6M
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::process_op(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
243
7.00M
  {
244
7.00M
    switch (op) {
245
246
82.0k
      case OpCode_return:
247
82.0k
  env.return_from_subr ();
248
82.0k
  break;
249
0
      case OpCode_endchar:
250
0
  OPSET::check_width (op, env, param);
251
0
  env.set_endchar (true);
252
0
  OPSET::flush_args_and_op (op, env, param);
253
0
  break;
254
255
29.8k
      case OpCode_fixedcs:
256
29.8k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
29.8k
  break;
258
259
108k
      case OpCode_callsubr:
260
108k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
108k
  break;
262
263
27.7k
      case OpCode_callgsubr:
264
27.7k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
27.7k
  break;
266
267
32.9k
      case OpCode_hstem:
268
60.0k
      case OpCode_hstemhm:
269
60.0k
  OPSET::check_width (op, env, param);
270
60.0k
  OPSET::process_hstem (op, env, param);
271
60.0k
  break;
272
26.2k
      case OpCode_vstem:
273
36.2k
      case OpCode_vstemhm:
274
36.2k
  OPSET::check_width (op, env, param);
275
36.2k
  OPSET::process_vstem (op, env, param);
276
36.2k
  break;
277
21.1k
      case OpCode_hintmask:
278
40.2k
      case OpCode_cntrmask:
279
40.2k
  OPSET::check_width (op, env, param);
280
40.2k
  OPSET::process_hintmask (op, env, param);
281
40.2k
  break;
282
160k
      case OpCode_rmoveto:
283
160k
  OPSET::check_width (op, env, param);
284
160k
  PATH::rmoveto (env, param);
285
160k
  OPSET::process_post_move (op, env, param);
286
160k
  break;
287
25.1k
      case OpCode_hmoveto:
288
25.1k
  OPSET::check_width (op, env, param);
289
25.1k
  PATH::hmoveto (env, param);
290
25.1k
  OPSET::process_post_move (op, env, param);
291
25.1k
  break;
292
13.6k
      case OpCode_vmoveto:
293
13.6k
  OPSET::check_width (op, env, param);
294
13.6k
  PATH::vmoveto (env, param);
295
13.6k
  OPSET::process_post_move (op, env, param);
296
13.6k
  break;
297
113k
      case OpCode_rlineto:
298
113k
  PATH::rlineto (env, param);
299
113k
  process_post_path (op, env, param);
300
113k
  break;
301
98.9k
      case OpCode_hlineto:
302
98.9k
  PATH::hlineto (env, param);
303
98.9k
  process_post_path (op, env, param);
304
98.9k
  break;
305
64.7k
      case OpCode_vlineto:
306
64.7k
  PATH::vlineto (env, param);
307
64.7k
  process_post_path (op, env, param);
308
64.7k
  break;
309
83.2k
      case OpCode_rrcurveto:
310
83.2k
  PATH::rrcurveto (env, param);
311
83.2k
  process_post_path (op, env, param);
312
83.2k
  break;
313
34.6k
      case OpCode_rcurveline:
314
34.6k
  PATH::rcurveline (env, param);
315
34.6k
  process_post_path (op, env, param);
316
34.6k
  break;
317
24.1k
      case OpCode_rlinecurve:
318
24.1k
  PATH::rlinecurve (env, param);
319
24.1k
  process_post_path (op, env, param);
320
24.1k
  break;
321
38.9k
      case OpCode_vvcurveto:
322
38.9k
  PATH::vvcurveto (env, param);
323
38.9k
  process_post_path (op, env, param);
324
38.9k
  break;
325
53.6k
      case OpCode_hhcurveto:
326
53.6k
  PATH::hhcurveto (env, param);
327
53.6k
  process_post_path (op, env, param);
328
53.6k
  break;
329
61.6k
      case OpCode_vhcurveto:
330
61.6k
  PATH::vhcurveto (env, param);
331
61.6k
  process_post_path (op, env, param);
332
61.6k
  break;
333
68.9k
      case OpCode_hvcurveto:
334
68.9k
  PATH::hvcurveto (env, param);
335
68.9k
  process_post_path (op, env, param);
336
68.9k
  break;
337
338
411
      case OpCode_hflex:
339
411
  PATH::hflex (env, param);
340
411
  OPSET::process_post_flex (op, env, param);
341
411
  break;
342
343
6.51k
      case OpCode_flex:
344
6.51k
  PATH::flex (env, param);
345
6.51k
  OPSET::process_post_flex (op, env, param);
346
6.51k
  break;
347
348
603
      case OpCode_hflex1:
349
603
  PATH::hflex1 (env, param);
350
603
  OPSET::process_post_flex (op, env, param);
351
603
  break;
352
353
414
      case OpCode_flex1:
354
414
  PATH::flex1 (env, param);
355
414
  OPSET::process_post_flex (op, env, param);
356
414
  break;
357
358
5.77M
      default:
359
5.77M
  SUPER::process_op (op, env);
360
5.77M
  break;
361
7.00M
    }
362
7.00M
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_op(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
243
3.38M
  {
244
3.38M
    switch (op) {
245
246
32.8k
      case OpCode_return:
247
32.8k
  env.return_from_subr ();
248
32.8k
  break;
249
0
      case OpCode_endchar:
250
0
  OPSET::check_width (op, env, param);
251
0
  env.set_endchar (true);
252
0
  OPSET::flush_args_and_op (op, env, param);
253
0
  break;
254
255
10.6k
      case OpCode_fixedcs:
256
10.6k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
10.6k
  break;
258
259
42.5k
      case OpCode_callsubr:
260
42.5k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
42.5k
  break;
262
263
9.06k
      case OpCode_callgsubr:
264
9.06k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
9.06k
  break;
266
267
17.6k
      case OpCode_hstem:
268
29.5k
      case OpCode_hstemhm:
269
29.5k
  OPSET::check_width (op, env, param);
270
29.5k
  OPSET::process_hstem (op, env, param);
271
29.5k
  break;
272
12.0k
      case OpCode_vstem:
273
16.1k
      case OpCode_vstemhm:
274
16.1k
  OPSET::check_width (op, env, param);
275
16.1k
  OPSET::process_vstem (op, env, param);
276
16.1k
  break;
277
8.78k
      case OpCode_hintmask:
278
17.1k
      case OpCode_cntrmask:
279
17.1k
  OPSET::check_width (op, env, param);
280
17.1k
  OPSET::process_hintmask (op, env, param);
281
17.1k
  break;
282
58.5k
      case OpCode_rmoveto:
283
58.5k
  OPSET::check_width (op, env, param);
284
58.5k
  PATH::rmoveto (env, param);
285
58.5k
  OPSET::process_post_move (op, env, param);
286
58.5k
  break;
287
8.49k
      case OpCode_hmoveto:
288
8.49k
  OPSET::check_width (op, env, param);
289
8.49k
  PATH::hmoveto (env, param);
290
8.49k
  OPSET::process_post_move (op, env, param);
291
8.49k
  break;
292
5.98k
      case OpCode_vmoveto:
293
5.98k
  OPSET::check_width (op, env, param);
294
5.98k
  PATH::vmoveto (env, param);
295
5.98k
  OPSET::process_post_move (op, env, param);
296
5.98k
  break;
297
37.1k
      case OpCode_rlineto:
298
37.1k
  PATH::rlineto (env, param);
299
37.1k
  process_post_path (op, env, param);
300
37.1k
  break;
301
35.6k
      case OpCode_hlineto:
302
35.6k
  PATH::hlineto (env, param);
303
35.6k
  process_post_path (op, env, param);
304
35.6k
  break;
305
22.6k
      case OpCode_vlineto:
306
22.6k
  PATH::vlineto (env, param);
307
22.6k
  process_post_path (op, env, param);
308
22.6k
  break;
309
49.2k
      case OpCode_rrcurveto:
310
49.2k
  PATH::rrcurveto (env, param);
311
49.2k
  process_post_path (op, env, param);
312
49.2k
  break;
313
20.4k
      case OpCode_rcurveline:
314
20.4k
  PATH::rcurveline (env, param);
315
20.4k
  process_post_path (op, env, param);
316
20.4k
  break;
317
9.73k
      case OpCode_rlinecurve:
318
9.73k
  PATH::rlinecurve (env, param);
319
9.73k
  process_post_path (op, env, param);
320
9.73k
  break;
321
24.1k
      case OpCode_vvcurveto:
322
24.1k
  PATH::vvcurveto (env, param);
323
24.1k
  process_post_path (op, env, param);
324
24.1k
  break;
325
36.6k
      case OpCode_hhcurveto:
326
36.6k
  PATH::hhcurveto (env, param);
327
36.6k
  process_post_path (op, env, param);
328
36.6k
  break;
329
41.4k
      case OpCode_vhcurveto:
330
41.4k
  PATH::vhcurveto (env, param);
331
41.4k
  process_post_path (op, env, param);
332
41.4k
  break;
333
37.8k
      case OpCode_hvcurveto:
334
37.8k
  PATH::hvcurveto (env, param);
335
37.8k
  process_post_path (op, env, param);
336
37.8k
  break;
337
338
107
      case OpCode_hflex:
339
107
  PATH::hflex (env, param);
340
107
  OPSET::process_post_flex (op, env, param);
341
107
  break;
342
343
1.21k
      case OpCode_flex:
344
1.21k
  PATH::flex (env, param);
345
1.21k
  OPSET::process_post_flex (op, env, param);
346
1.21k
  break;
347
348
118
      case OpCode_hflex1:
349
118
  PATH::hflex1 (env, param);
350
118
  OPSET::process_post_flex (op, env, param);
351
118
  break;
352
353
126
      case OpCode_flex1:
354
126
  PATH::flex1 (env, param);
355
126
  OPSET::process_post_flex (op, env, param);
356
126
  break;
357
358
2.84M
      default:
359
2.84M
  SUPER::process_op (op, env);
360
2.84M
  break;
361
3.38M
    }
362
3.38M
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_op(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::process_op(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
243
12.9M
  {
244
12.9M
    switch (op) {
245
246
493k
      case OpCode_return:
247
493k
  env.return_from_subr ();
248
493k
  break;
249
18.7k
      case OpCode_endchar:
250
18.7k
  OPSET::check_width (op, env, param);
251
18.7k
  env.set_endchar (true);
252
18.7k
  OPSET::flush_args_and_op (op, env, param);
253
18.7k
  break;
254
255
26.4k
      case OpCode_fixedcs:
256
26.4k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
26.4k
  break;
258
259
543k
      case OpCode_callsubr:
260
543k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
543k
  break;
262
263
1.61k
      case OpCode_callgsubr:
264
1.61k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
1.61k
  break;
266
267
30.8k
      case OpCode_hstem:
268
42.1k
      case OpCode_hstemhm:
269
42.1k
  OPSET::check_width (op, env, param);
270
42.1k
  OPSET::process_hstem (op, env, param);
271
42.1k
  break;
272
16.9k
      case OpCode_vstem:
273
28.3k
      case OpCode_vstemhm:
274
28.3k
  OPSET::check_width (op, env, param);
275
28.3k
  OPSET::process_vstem (op, env, param);
276
28.3k
  break;
277
15.2k
      case OpCode_hintmask:
278
33.1k
      case OpCode_cntrmask:
279
33.1k
  OPSET::check_width (op, env, param);
280
33.1k
  OPSET::process_hintmask (op, env, param);
281
33.1k
  break;
282
93.9k
      case OpCode_rmoveto:
283
93.9k
  OPSET::check_width (op, env, param);
284
93.9k
  PATH::rmoveto (env, param);
285
93.9k
  OPSET::process_post_move (op, env, param);
286
93.9k
  break;
287
49.4k
      case OpCode_hmoveto:
288
49.4k
  OPSET::check_width (op, env, param);
289
49.4k
  PATH::hmoveto (env, param);
290
49.4k
  OPSET::process_post_move (op, env, param);
291
49.4k
  break;
292
20.3k
      case OpCode_vmoveto:
293
20.3k
  OPSET::check_width (op, env, param);
294
20.3k
  PATH::vmoveto (env, param);
295
20.3k
  OPSET::process_post_move (op, env, param);
296
20.3k
  break;
297
171k
      case OpCode_rlineto:
298
171k
  PATH::rlineto (env, param);
299
171k
  process_post_path (op, env, param);
300
171k
  break;
301
118k
      case OpCode_hlineto:
302
118k
  PATH::hlineto (env, param);
303
118k
  process_post_path (op, env, param);
304
118k
  break;
305
92.6k
      case OpCode_vlineto:
306
92.6k
  PATH::vlineto (env, param);
307
92.6k
  process_post_path (op, env, param);
308
92.6k
  break;
309
88.5k
      case OpCode_rrcurveto:
310
88.5k
  PATH::rrcurveto (env, param);
311
88.5k
  process_post_path (op, env, param);
312
88.5k
  break;
313
42.7k
      case OpCode_rcurveline:
314
42.7k
  PATH::rcurveline (env, param);
315
42.7k
  process_post_path (op, env, param);
316
42.7k
  break;
317
60.4k
      case OpCode_rlinecurve:
318
60.4k
  PATH::rlinecurve (env, param);
319
60.4k
  process_post_path (op, env, param);
320
60.4k
  break;
321
57.0k
      case OpCode_vvcurveto:
322
57.0k
  PATH::vvcurveto (env, param);
323
57.0k
  process_post_path (op, env, param);
324
57.0k
  break;
325
108k
      case OpCode_hhcurveto:
326
108k
  PATH::hhcurveto (env, param);
327
108k
  process_post_path (op, env, param);
328
108k
  break;
329
87.8k
      case OpCode_vhcurveto:
330
87.8k
  PATH::vhcurveto (env, param);
331
87.8k
  process_post_path (op, env, param);
332
87.8k
  break;
333
118k
      case OpCode_hvcurveto:
334
118k
  PATH::hvcurveto (env, param);
335
118k
  process_post_path (op, env, param);
336
118k
  break;
337
338
249
      case OpCode_hflex:
339
249
  PATH::hflex (env, param);
340
249
  OPSET::process_post_flex (op, env, param);
341
249
  break;
342
343
250
      case OpCode_flex:
344
250
  PATH::flex (env, param);
345
250
  OPSET::process_post_flex (op, env, param);
346
250
  break;
347
348
318
      case OpCode_hflex1:
349
318
  PATH::hflex1 (env, param);
350
318
  OPSET::process_post_flex (op, env, param);
351
318
  break;
352
353
233
      case OpCode_flex1:
354
233
  PATH::flex1 (env, param);
355
233
  OPSET::process_post_flex (op, env, param);
356
233
  break;
357
358
10.6M
      default:
359
10.6M
  SUPER::process_op (op, env);
360
10.6M
  break;
361
12.9M
    }
362
12.9M
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_op(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
243
21.2M
  {
244
21.2M
    switch (op) {
245
246
334k
      case OpCode_return:
247
334k
  env.return_from_subr ();
248
334k
  break;
249
143k
      case OpCode_endchar:
250
143k
  OPSET::check_width (op, env, param);
251
143k
  env.set_endchar (true);
252
143k
  OPSET::flush_args_and_op (op, env, param);
253
143k
  break;
254
255
23.2k
      case OpCode_fixedcs:
256
23.2k
  env.argStack.push_fixed_from_substr (env.str_ref);
257
23.2k
  break;
258
259
401k
      case OpCode_callsubr:
260
401k
  env.call_subr (env.localSubrs, CSType_LocalSubr);
261
401k
  break;
262
263
6.98k
      case OpCode_callgsubr:
264
6.98k
  env.call_subr (env.globalSubrs, CSType_GlobalSubr);
265
6.98k
  break;
266
267
28.6k
      case OpCode_hstem:
268
39.3k
      case OpCode_hstemhm:
269
39.3k
  OPSET::check_width (op, env, param);
270
39.3k
  OPSET::process_hstem (op, env, param);
271
39.3k
  break;
272
15.8k
      case OpCode_vstem:
273
23.1k
      case OpCode_vstemhm:
274
23.1k
  OPSET::check_width (op, env, param);
275
23.1k
  OPSET::process_vstem (op, env, param);
276
23.1k
  break;
277
33.7k
      case OpCode_hintmask:
278
53.8k
      case OpCode_cntrmask:
279
53.8k
  OPSET::check_width (op, env, param);
280
53.8k
  OPSET::process_hintmask (op, env, param);
281
53.8k
  break;
282
224k
      case OpCode_rmoveto:
283
224k
  OPSET::check_width (op, env, param);
284
224k
  PATH::rmoveto (env, param);
285
224k
  OPSET::process_post_move (op, env, param);
286
224k
  break;
287
21.5k
      case OpCode_hmoveto:
288
21.5k
  OPSET::check_width (op, env, param);
289
21.5k
  PATH::hmoveto (env, param);
290
21.5k
  OPSET::process_post_move (op, env, param);
291
21.5k
  break;
292
39.3k
      case OpCode_vmoveto:
293
39.3k
  OPSET::check_width (op, env, param);
294
39.3k
  PATH::vmoveto (env, param);
295
39.3k
  OPSET::process_post_move (op, env, param);
296
39.3k
  break;
297
243k
      case OpCode_rlineto:
298
243k
  PATH::rlineto (env, param);
299
243k
  process_post_path (op, env, param);
300
243k
  break;
301
102k
      case OpCode_hlineto:
302
102k
  PATH::hlineto (env, param);
303
102k
  process_post_path (op, env, param);
304
102k
  break;
305
91.3k
      case OpCode_vlineto:
306
91.3k
  PATH::vlineto (env, param);
307
91.3k
  process_post_path (op, env, param);
308
91.3k
  break;
309
336k
      case OpCode_rrcurveto:
310
336k
  PATH::rrcurveto (env, param);
311
336k
  process_post_path (op, env, param);
312
336k
  break;
313
185k
      case OpCode_rcurveline:
314
185k
  PATH::rcurveline (env, param);
315
185k
  process_post_path (op, env, param);
316
185k
  break;
317
219k
      case OpCode_rlinecurve:
318
219k
  PATH::rlinecurve (env, param);
319
219k
  process_post_path (op, env, param);
320
219k
  break;
321
126k
      case OpCode_vvcurveto:
322
126k
  PATH::vvcurveto (env, param);
323
126k
  process_post_path (op, env, param);
324
126k
  break;
325
413k
      case OpCode_hhcurveto:
326
413k
  PATH::hhcurveto (env, param);
327
413k
  process_post_path (op, env, param);
328
413k
  break;
329
269k
      case OpCode_vhcurveto:
330
269k
  PATH::vhcurveto (env, param);
331
269k
  process_post_path (op, env, param);
332
269k
  break;
333
351k
      case OpCode_hvcurveto:
334
351k
  PATH::hvcurveto (env, param);
335
351k
  process_post_path (op, env, param);
336
351k
  break;
337
338
395
      case OpCode_hflex:
339
395
  PATH::hflex (env, param);
340
395
  OPSET::process_post_flex (op, env, param);
341
395
  break;
342
343
969
      case OpCode_flex:
344
969
  PATH::flex (env, param);
345
969
  OPSET::process_post_flex (op, env, param);
346
969
  break;
347
348
1.18k
      case OpCode_hflex1:
349
1.18k
  PATH::hflex1 (env, param);
350
1.18k
  OPSET::process_post_flex (op, env, param);
351
1.18k
  break;
352
353
727
      case OpCode_flex1:
354
727
  PATH::flex1 (env, param);
355
727
  OPSET::process_post_flex (op, env, param);
356
727
  break;
357
358
17.5M
      default:
359
17.5M
  SUPER::process_op (op, env);
360
17.5M
  break;
361
21.2M
    }
362
21.2M
  }
363
364
  static void process_hstem (op_code_t op, ENV &env, PARAM& param)
365
171k
  {
366
171k
    env.hstem_count += env.argStack.get_count () / 2;
367
171k
    OPSET::flush_args_and_op (op, env, param);
368
171k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::process_hstem(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
365
60.0k
  {
366
60.0k
    env.hstem_count += env.argStack.get_count () / 2;
367
60.0k
    OPSET::flush_args_and_op (op, env, param);
368
60.0k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_hstem(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
365
29.5k
  {
366
29.5k
    env.hstem_count += env.argStack.get_count () / 2;
367
29.5k
    OPSET::flush_args_and_op (op, env, param);
368
29.5k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_hstem(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::process_hstem(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
365
42.1k
  {
366
42.1k
    env.hstem_count += env.argStack.get_count () / 2;
367
42.1k
    OPSET::flush_args_and_op (op, env, param);
368
42.1k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_hstem(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
365
39.3k
  {
366
39.3k
    env.hstem_count += env.argStack.get_count () / 2;
367
39.3k
    OPSET::flush_args_and_op (op, env, param);
368
39.3k
  }
369
370
  static void process_vstem (op_code_t op, ENV &env, PARAM& param)
371
103k
  {
372
103k
    env.vstem_count += env.argStack.get_count () / 2;
373
103k
    OPSET::flush_args_and_op (op, env, param);
374
103k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::process_vstem(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
371
36.2k
  {
372
36.2k
    env.vstem_count += env.argStack.get_count () / 2;
373
36.2k
    OPSET::flush_args_and_op (op, env, param);
374
36.2k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_vstem(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
371
16.1k
  {
372
16.1k
    env.vstem_count += env.argStack.get_count () / 2;
373
16.1k
    OPSET::flush_args_and_op (op, env, param);
374
16.1k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_vstem(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::process_vstem(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
371
28.3k
  {
372
28.3k
    env.vstem_count += env.argStack.get_count () / 2;
373
28.3k
    OPSET::flush_args_and_op (op, env, param);
374
28.3k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_vstem(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
371
23.1k
  {
372
23.1k
    env.vstem_count += env.argStack.get_count () / 2;
373
23.1k
    OPSET::flush_args_and_op (op, env, param);
374
23.1k
  }
375
376
  static void process_hintmask (op_code_t op, ENV &env, PARAM& param)
377
144k
  {
378
144k
    env.determine_hintmask_size ();
379
144k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
138k
    {
381
138k
      OPSET::flush_hintmask (op, env, param);
382
138k
      env.str_ref.inc (env.hintmask_size);
383
138k
    }
384
144k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::process_hintmask(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
377
40.2k
  {
378
40.2k
    env.determine_hintmask_size ();
379
40.2k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
39.8k
    {
381
39.8k
      OPSET::flush_hintmask (op, env, param);
382
39.8k
      env.str_ref.inc (env.hintmask_size);
383
39.8k
    }
384
40.2k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_hintmask(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
377
17.1k
  {
378
17.1k
    env.determine_hintmask_size ();
379
17.1k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
16.9k
    {
381
16.9k
      OPSET::flush_hintmask (op, env, param);
382
16.9k
      env.str_ref.inc (env.hintmask_size);
383
16.9k
    }
384
17.1k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_hintmask(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::process_hintmask(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
377
33.1k
  {
378
33.1k
    env.determine_hintmask_size ();
379
33.1k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
29.2k
    {
381
29.2k
      OPSET::flush_hintmask (op, env, param);
382
29.2k
      env.str_ref.inc (env.hintmask_size);
383
29.2k
    }
384
33.1k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_hintmask(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
377
53.8k
  {
378
53.8k
    env.determine_hintmask_size ();
379
53.8k
    if (likely (env.str_ref.avail (env.hintmask_size)))
380
52.3k
    {
381
52.3k
      OPSET::flush_hintmask (op, env, param);
382
52.3k
      env.str_ref.inc (env.hintmask_size);
383
52.3k
    }
384
53.8k
  }
385
386
  static void process_post_flex (op_code_t op, ENV &env, PARAM& param)
387
13.8k
  {
388
13.8k
    OPSET::flush_args_and_op (op, env, param);
389
13.8k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::process_post_flex(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
387
7.94k
  {
388
7.94k
    OPSET::flush_args_and_op (op, env, param);
389
7.94k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_post_flex(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
387
1.56k
  {
388
1.56k
    OPSET::flush_args_and_op (op, env, param);
389
1.56k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_post_flex(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::process_post_flex(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
387
1.05k
  {
388
1.05k
    OPSET::flush_args_and_op (op, env, param);
389
1.05k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_post_flex(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
387
3.27k
  {
388
3.27k
    OPSET::flush_args_and_op (op, env, param);
389
3.27k
  }
390
391
  static void check_width (op_code_t op, ENV &env, PARAM& param)
392
831k
  {}
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::check_width(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
392
286k
  {}
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::check_width(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
392
545k
  {}
393
394
  static void process_post_move (op_code_t op, ENV &env, PARAM& param)
395
721k
  {
396
721k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
721k
    OPSET::flush_args_and_op (op, env, param);
402
721k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::process_post_move(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
395
198k
  {
396
198k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
198k
    OPSET::flush_args_and_op (op, env, param);
402
198k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_post_move(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
395
73.0k
  {
396
73.0k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
73.0k
    OPSET::flush_args_and_op (op, env, param);
402
73.0k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_post_move(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::process_post_move(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
395
163k
  {
396
163k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
163k
    OPSET::flush_args_and_op (op, env, param);
402
163k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_post_move(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
395
285k
  {
396
285k
    if (!env.seen_moveto)
397
0
    {
398
0
      env.determine_hintmask_size ();
399
0
      env.seen_moveto = true;
400
0
    }
401
285k
    OPSET::flush_args_and_op (op, env, param);
402
285k
  }
403
404
  static void process_post_path (op_code_t op, ENV &env, PARAM& param)
405
4.24M
  {
406
4.24M
    OPSET::flush_args_and_op (op, env, param);
407
4.24M
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::process_post_path(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
405
642k
  {
406
642k
    OPSET::flush_args_and_op (op, env, param);
407
642k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::process_post_path(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
405
314k
  {
406
314k
    OPSET::flush_args_and_op (op, env, param);
407
314k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::process_post_path(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::process_post_path(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
405
946k
  {
406
946k
    OPSET::flush_args_and_op (op, env, param);
407
946k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::process_post_path(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
405
2.34M
  {
406
2.34M
    OPSET::flush_args_and_op (op, env, param);
407
2.34M
  }
408
409
  static void flush_args_and_op (op_code_t op, ENV &env, PARAM& param)
410
5.63M
  {
411
5.63M
    OPSET::flush_args (env, param);
412
5.63M
    OPSET::flush_op (op, env, param);
413
5.63M
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::flush_args_and_op(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
410
1.04M
  {
411
1.04M
    OPSET::flush_args (env, param);
412
1.04M
    OPSET::flush_op (op, env, param);
413
1.04M
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::flush_args_and_op(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
410
472k
  {
411
472k
    OPSET::flush_args (env, param);
412
472k
    OPSET::flush_op (op, env, param);
413
472k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::flush_args_and_op(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::flush_args_and_op(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
410
1.22M
  {
411
1.22M
    OPSET::flush_args (env, param);
412
1.22M
    OPSET::flush_op (op, env, param);
413
1.22M
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::flush_args_and_op(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
410
2.88M
  {
411
2.88M
    OPSET::flush_args (env, param);
412
2.88M
    OPSET::flush_op (op, env, param);
413
2.88M
  }
414
415
  static void flush_args (ENV &env, PARAM& param)
416
5.63M
  {
417
5.63M
    env.pop_n_args (env.argStack.get_count ());
418
5.63M
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::flush_args(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
416
1.04M
  {
417
1.04M
    env.pop_n_args (env.argStack.get_count ());
418
1.04M
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::flush_args(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
416
472k
  {
417
472k
    env.pop_n_args (env.argStack.get_count ());
418
472k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::flush_args(CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::flush_args(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
416
1.22M
  {
417
1.22M
    env.pop_n_args (env.argStack.get_count ());
418
1.22M
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::flush_args(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
416
2.88M
  {
417
2.88M
    env.pop_n_args (env.argStack.get_count ());
418
2.88M
  }
419
420
  static void flush_op (op_code_t op, ENV &env, PARAM& param)
421
5.63M
  {
422
5.63M
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::flush_op(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
421
1.04M
  {
422
1.04M
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::flush_op(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
421
472k
  {
422
472k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::flush_op(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::flush_op(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
421
1.22M
  {
422
1.22M
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::flush_op(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
421
2.88M
  {
422
2.88M
  }
423
424
  static void flush_hintmask (op_code_t op, ENV &env, PARAM& param)
425
138k
  {
426
138k
    OPSET::flush_args_and_op (op, env, param);
427
138k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t, cff1_path_procs_extents_t>::flush_hintmask(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
425
39.8k
  {
426
39.8k
    OPSET::flush_args_and_op (op, env, param);
427
39.8k
  }
CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t, cff1_path_procs_path_t>::flush_hintmask(unsigned int, CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
425
16.9k
  {
426
16.9k
    OPSET::flush_args_and_op (op, env, param);
427
16.9k
  }
Unexecuted instantiation: CFF::cs_opset_t<CFF::number_t, cff1_cs_opset_seac_t, CFF::cff1_cs_interp_env_t, get_seac_param_t, CFF::path_procs_null_t<CFF::cff1_cs_interp_env_t, get_seac_param_t> >::flush_hintmask(unsigned int, CFF::cff1_cs_interp_env_t&, get_seac_param_t&)
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t, cff2_path_procs_extents_t>::flush_hintmask(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
425
29.2k
  {
426
29.2k
    OPSET::flush_args_and_op (op, env, param);
427
29.2k
  }
CFF::cs_opset_t<CFF::number_t, cff2_cs_opset_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t, cff2_path_procs_path_t>::flush_hintmask(unsigned int, CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
425
52.3k
  {
426
52.3k
    OPSET::flush_args_and_op (op, env, param);
427
52.3k
  }
428
429
  static bool is_number_op (op_code_t op)
430
  {
431
    switch (op)
432
    {
433
      case OpCode_shortint:
434
      case OpCode_fixedcs:
435
      case OpCode_TwoBytePosInt0: case OpCode_TwoBytePosInt1:
436
      case OpCode_TwoBytePosInt2: case OpCode_TwoBytePosInt3:
437
      case OpCode_TwoByteNegInt0: case OpCode_TwoByteNegInt1:
438
      case OpCode_TwoByteNegInt2: case OpCode_TwoByteNegInt3:
439
  return true;
440
441
      default:
442
  /* 1-byte integer */
443
  return (OpCode_OneByteIntFirst <= op) && (op <= OpCode_OneByteIntLast);
444
    }
445
  }
446
447
  protected:
448
  typedef opset_t<ARG>  SUPER;
449
};
450
451
template <typename PATH, typename ENV, typename PARAM>
452
struct path_procs_t
453
{
454
  static void rmoveto (ENV &env, PARAM& param)
455
537k
  {
456
537k
    point_t pt1 = env.get_pt ();
457
537k
    const number_t &dy = env.pop_arg ();
458
537k
    const number_t &dx = env.pop_arg ();
459
537k
    pt1.move (dx, dy);
460
537k
    PATH::moveto (env, param, pt1);
461
537k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::rmoveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
455
160k
  {
456
160k
    point_t pt1 = env.get_pt ();
457
160k
    const number_t &dy = env.pop_arg ();
458
160k
    const number_t &dx = env.pop_arg ();
459
160k
    pt1.move (dx, dy);
460
160k
    PATH::moveto (env, param, pt1);
461
160k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::rmoveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
455
58.5k
  {
456
58.5k
    point_t pt1 = env.get_pt ();
457
58.5k
    const number_t &dy = env.pop_arg ();
458
58.5k
    const number_t &dx = env.pop_arg ();
459
58.5k
    pt1.move (dx, dy);
460
58.5k
    PATH::moveto (env, param, pt1);
461
58.5k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::rmoveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
455
93.9k
  {
456
93.9k
    point_t pt1 = env.get_pt ();
457
93.9k
    const number_t &dy = env.pop_arg ();
458
93.9k
    const number_t &dx = env.pop_arg ();
459
93.9k
    pt1.move (dx, dy);
460
93.9k
    PATH::moveto (env, param, pt1);
461
93.9k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::rmoveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
455
224k
  {
456
224k
    point_t pt1 = env.get_pt ();
457
224k
    const number_t &dy = env.pop_arg ();
458
224k
    const number_t &dx = env.pop_arg ();
459
224k
    pt1.move (dx, dy);
460
224k
    PATH::moveto (env, param, pt1);
461
224k
  }
462
463
  static void hmoveto (ENV &env, PARAM& param)
464
104k
  {
465
104k
    point_t pt1 = env.get_pt ();
466
104k
    pt1.move_x (env.pop_arg ());
467
104k
    PATH::moveto (env, param, pt1);
468
104k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::hmoveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
464
25.1k
  {
465
25.1k
    point_t pt1 = env.get_pt ();
466
25.1k
    pt1.move_x (env.pop_arg ());
467
25.1k
    PATH::moveto (env, param, pt1);
468
25.1k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::hmoveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
464
8.49k
  {
465
8.49k
    point_t pt1 = env.get_pt ();
466
8.49k
    pt1.move_x (env.pop_arg ());
467
8.49k
    PATH::moveto (env, param, pt1);
468
8.49k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::hmoveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
464
49.4k
  {
465
49.4k
    point_t pt1 = env.get_pt ();
466
49.4k
    pt1.move_x (env.pop_arg ());
467
49.4k
    PATH::moveto (env, param, pt1);
468
49.4k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::hmoveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
464
21.5k
  {
465
21.5k
    point_t pt1 = env.get_pt ();
466
21.5k
    pt1.move_x (env.pop_arg ());
467
21.5k
    PATH::moveto (env, param, pt1);
468
21.5k
  }
469
470
  static void vmoveto (ENV &env, PARAM& param)
471
79.3k
  {
472
79.3k
    point_t pt1 = env.get_pt ();
473
79.3k
    pt1.move_y (env.pop_arg ());
474
79.3k
    PATH::moveto (env, param, pt1);
475
79.3k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::vmoveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
471
13.6k
  {
472
13.6k
    point_t pt1 = env.get_pt ();
473
13.6k
    pt1.move_y (env.pop_arg ());
474
13.6k
    PATH::moveto (env, param, pt1);
475
13.6k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::vmoveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
471
5.98k
  {
472
5.98k
    point_t pt1 = env.get_pt ();
473
5.98k
    pt1.move_y (env.pop_arg ());
474
5.98k
    PATH::moveto (env, param, pt1);
475
5.98k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::vmoveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
471
20.3k
  {
472
20.3k
    point_t pt1 = env.get_pt ();
473
20.3k
    pt1.move_y (env.pop_arg ());
474
20.3k
    PATH::moveto (env, param, pt1);
475
20.3k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::vmoveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
471
39.3k
  {
472
39.3k
    point_t pt1 = env.get_pt ();
473
39.3k
    pt1.move_y (env.pop_arg ());
474
39.3k
    PATH::moveto (env, param, pt1);
475
39.3k
  }
476
477
  static void rlineto (ENV &env, PARAM& param)
478
565k
  {
479
1.76M
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
1.19M
    {
481
1.19M
      point_t pt1 = env.get_pt ();
482
1.19M
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
1.19M
      PATH::line (env, param, pt1);
484
1.19M
    }
485
565k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::rlineto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
478
113k
  {
479
311k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
198k
    {
481
198k
      point_t pt1 = env.get_pt ();
482
198k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
198k
      PATH::line (env, param, pt1);
484
198k
    }
485
113k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::rlineto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
478
37.1k
  {
479
100k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
63.4k
    {
481
63.4k
      point_t pt1 = env.get_pt ();
482
63.4k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
63.4k
      PATH::line (env, param, pt1);
484
63.4k
    }
485
37.1k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::rlineto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
478
171k
  {
479
719k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
547k
    {
481
547k
      point_t pt1 = env.get_pt ();
482
547k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
547k
      PATH::line (env, param, pt1);
484
547k
    }
485
171k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::rlineto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
478
243k
  {
479
630k
    for (unsigned int i = 0; i + 2 <= env.argStack.get_count (); i += 2)
480
387k
    {
481
387k
      point_t pt1 = env.get_pt ();
482
387k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
483
387k
      PATH::line (env, param, pt1);
484
387k
    }
485
243k
  }
486
487
  static void hlineto (ENV &env, PARAM& param)
488
355k
  {
489
355k
    point_t pt1;
490
355k
    unsigned int i = 0;
491
817k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
461k
    {
493
461k
      pt1 = env.get_pt ();
494
461k
      pt1.move_x (env.eval_arg (i));
495
461k
      PATH::line (env, param, pt1);
496
461k
      pt1.move_y (env.eval_arg (i+1));
497
461k
      PATH::line (env, param, pt1);
498
461k
    }
499
355k
    if (i < env.argStack.get_count ())
500
260k
    {
501
260k
      pt1 = env.get_pt ();
502
260k
      pt1.move_x (env.eval_arg (i));
503
260k
      PATH::line (env, param, pt1);
504
260k
    }
505
355k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::hlineto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
488
98.9k
  {
489
98.9k
    point_t pt1;
490
98.9k
    unsigned int i = 0;
491
191k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
92.8k
    {
493
92.8k
      pt1 = env.get_pt ();
494
92.8k
      pt1.move_x (env.eval_arg (i));
495
92.8k
      PATH::line (env, param, pt1);
496
92.8k
      pt1.move_y (env.eval_arg (i+1));
497
92.8k
      PATH::line (env, param, pt1);
498
92.8k
    }
499
98.9k
    if (i < env.argStack.get_count ())
500
70.5k
    {
501
70.5k
      pt1 = env.get_pt ();
502
70.5k
      pt1.move_x (env.eval_arg (i));
503
70.5k
      PATH::line (env, param, pt1);
504
70.5k
    }
505
98.9k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::hlineto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
488
35.6k
  {
489
35.6k
    point_t pt1;
490
35.6k
    unsigned int i = 0;
491
68.5k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
32.8k
    {
493
32.8k
      pt1 = env.get_pt ();
494
32.8k
      pt1.move_x (env.eval_arg (i));
495
32.8k
      PATH::line (env, param, pt1);
496
32.8k
      pt1.move_y (env.eval_arg (i+1));
497
32.8k
      PATH::line (env, param, pt1);
498
32.8k
    }
499
35.6k
    if (i < env.argStack.get_count ())
500
26.5k
    {
501
26.5k
      pt1 = env.get_pt ();
502
26.5k
      pt1.move_x (env.eval_arg (i));
503
26.5k
      PATH::line (env, param, pt1);
504
26.5k
    }
505
35.6k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::hlineto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
488
118k
  {
489
118k
    point_t pt1;
490
118k
    unsigned int i = 0;
491
364k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
246k
    {
493
246k
      pt1 = env.get_pt ();
494
246k
      pt1.move_x (env.eval_arg (i));
495
246k
      PATH::line (env, param, pt1);
496
246k
      pt1.move_y (env.eval_arg (i+1));
497
246k
      PATH::line (env, param, pt1);
498
246k
    }
499
118k
    if (i < env.argStack.get_count ())
500
78.1k
    {
501
78.1k
      pt1 = env.get_pt ();
502
78.1k
      pt1.move_x (env.eval_arg (i));
503
78.1k
      PATH::line (env, param, pt1);
504
78.1k
    }
505
118k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::hlineto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
488
102k
  {
489
102k
    point_t pt1;
490
102k
    unsigned int i = 0;
491
192k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
492
89.6k
    {
493
89.6k
      pt1 = env.get_pt ();
494
89.6k
      pt1.move_x (env.eval_arg (i));
495
89.6k
      PATH::line (env, param, pt1);
496
89.6k
      pt1.move_y (env.eval_arg (i+1));
497
89.6k
      PATH::line (env, param, pt1);
498
89.6k
    }
499
102k
    if (i < env.argStack.get_count ())
500
85.1k
    {
501
85.1k
      pt1 = env.get_pt ();
502
85.1k
      pt1.move_x (env.eval_arg (i));
503
85.1k
      PATH::line (env, param, pt1);
504
85.1k
    }
505
102k
  }
506
507
  static void vlineto (ENV &env, PARAM& param)
508
271k
  {
509
271k
    point_t pt1;
510
271k
    unsigned int i = 0;
511
716k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
445k
    {
513
445k
      pt1 = env.get_pt ();
514
445k
      pt1.move_y (env.eval_arg (i));
515
445k
      PATH::line (env, param, pt1);
516
445k
      pt1.move_x (env.eval_arg (i+1));
517
445k
      PATH::line (env, param, pt1);
518
445k
    }
519
271k
    if (i < env.argStack.get_count ())
520
196k
    {
521
196k
      pt1 = env.get_pt ();
522
196k
      pt1.move_y (env.eval_arg (i));
523
196k
      PATH::line (env, param, pt1);
524
196k
    }
525
271k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::vlineto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
508
64.7k
  {
509
64.7k
    point_t pt1;
510
64.7k
    unsigned int i = 0;
511
167k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
102k
    {
513
102k
      pt1 = env.get_pt ();
514
102k
      pt1.move_y (env.eval_arg (i));
515
102k
      PATH::line (env, param, pt1);
516
102k
      pt1.move_x (env.eval_arg (i+1));
517
102k
      PATH::line (env, param, pt1);
518
102k
    }
519
64.7k
    if (i < env.argStack.get_count ())
520
44.2k
    {
521
44.2k
      pt1 = env.get_pt ();
522
44.2k
      pt1.move_y (env.eval_arg (i));
523
44.2k
      PATH::line (env, param, pt1);
524
44.2k
    }
525
64.7k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::vlineto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
508
22.6k
  {
509
22.6k
    point_t pt1;
510
22.6k
    unsigned int i = 0;
511
54.3k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
31.6k
    {
513
31.6k
      pt1 = env.get_pt ();
514
31.6k
      pt1.move_y (env.eval_arg (i));
515
31.6k
      PATH::line (env, param, pt1);
516
31.6k
      pt1.move_x (env.eval_arg (i+1));
517
31.6k
      PATH::line (env, param, pt1);
518
31.6k
    }
519
22.6k
    if (i < env.argStack.get_count ())
520
15.0k
    {
521
15.0k
      pt1 = env.get_pt ();
522
15.0k
      pt1.move_y (env.eval_arg (i));
523
15.0k
      PATH::line (env, param, pt1);
524
15.0k
    }
525
22.6k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::vlineto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
508
92.6k
  {
509
92.6k
    point_t pt1;
510
92.6k
    unsigned int i = 0;
511
290k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
198k
    {
513
198k
      pt1 = env.get_pt ();
514
198k
      pt1.move_y (env.eval_arg (i));
515
198k
      PATH::line (env, param, pt1);
516
198k
      pt1.move_x (env.eval_arg (i+1));
517
198k
      PATH::line (env, param, pt1);
518
198k
    }
519
92.6k
    if (i < env.argStack.get_count ())
520
63.0k
    {
521
63.0k
      pt1 = env.get_pt ();
522
63.0k
      pt1.move_y (env.eval_arg (i));
523
63.0k
      PATH::line (env, param, pt1);
524
63.0k
    }
525
92.6k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::vlineto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
508
91.3k
  {
509
91.3k
    point_t pt1;
510
91.3k
    unsigned int i = 0;
511
204k
    for (; i + 2 <= env.argStack.get_count (); i += 2)
512
112k
    {
513
112k
      pt1 = env.get_pt ();
514
112k
      pt1.move_y (env.eval_arg (i));
515
112k
      PATH::line (env, param, pt1);
516
112k
      pt1.move_x (env.eval_arg (i+1));
517
112k
      PATH::line (env, param, pt1);
518
112k
    }
519
91.3k
    if (i < env.argStack.get_count ())
520
73.9k
    {
521
73.9k
      pt1 = env.get_pt ();
522
73.9k
      pt1.move_y (env.eval_arg (i));
523
73.9k
      PATH::line (env, param, pt1);
524
73.9k
    }
525
91.3k
  }
526
527
  static void rrcurveto (ENV &env, PARAM& param)
528
557k
  {
529
1.70M
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
1.14M
    {
531
1.14M
      point_t pt1 = env.get_pt ();
532
1.14M
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
1.14M
      point_t pt2 = pt1;
534
1.14M
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
1.14M
      point_t pt3 = pt2;
536
1.14M
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
1.14M
      PATH::curve (env, param, pt1, pt2, pt3);
538
1.14M
    }
539
557k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::rrcurveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
528
83.2k
  {
529
319k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
236k
    {
531
236k
      point_t pt1 = env.get_pt ();
532
236k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
236k
      point_t pt2 = pt1;
534
236k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
236k
      point_t pt3 = pt2;
536
236k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
236k
      PATH::curve (env, param, pt1, pt2, pt3);
538
236k
    }
539
83.2k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::rrcurveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
528
49.2k
  {
529
175k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
126k
    {
531
126k
      point_t pt1 = env.get_pt ();
532
126k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
126k
      point_t pt2 = pt1;
534
126k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
126k
      point_t pt3 = pt2;
536
126k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
126k
      PATH::curve (env, param, pt1, pt2, pt3);
538
126k
    }
539
49.2k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::rrcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
528
88.5k
  {
529
230k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
142k
    {
531
142k
      point_t pt1 = env.get_pt ();
532
142k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
142k
      point_t pt2 = pt1;
534
142k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
142k
      point_t pt3 = pt2;
536
142k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
142k
      PATH::curve (env, param, pt1, pt2, pt3);
538
142k
    }
539
88.5k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::rrcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
528
336k
  {
529
976k
    for (unsigned int i = 0; i + 6 <= env.argStack.get_count (); i += 6)
530
640k
    {
531
640k
      point_t pt1 = env.get_pt ();
532
640k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
533
640k
      point_t pt2 = pt1;
534
640k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
535
640k
      point_t pt3 = pt2;
536
640k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
537
640k
      PATH::curve (env, param, pt1, pt2, pt3);
538
640k
    }
539
336k
  }
540
541
  static void rcurveline (ENV &env, PARAM& param)
542
283k
  {
543
283k
    unsigned int arg_count = env.argStack.get_count ();
544
283k
    if (unlikely (arg_count < 8))
545
55.1k
      return;
546
547
228k
    unsigned int i = 0;
548
228k
    unsigned int curve_limit = arg_count - 2;
549
563k
    for (; i + 6 <= curve_limit; i += 6)
550
334k
    {
551
334k
      point_t pt1 = env.get_pt ();
552
334k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
334k
      point_t pt2 = pt1;
554
334k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
334k
      point_t pt3 = pt2;
556
334k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
334k
      PATH::curve (env, param, pt1, pt2, pt3);
558
334k
    }
559
560
228k
    point_t pt1 = env.get_pt ();
561
228k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
228k
    PATH::line (env, param, pt1);
563
228k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::rcurveline(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
542
34.6k
  {
543
34.6k
    unsigned int arg_count = env.argStack.get_count ();
544
34.6k
    if (unlikely (arg_count < 8))
545
11.3k
      return;
546
547
23.2k
    unsigned int i = 0;
548
23.2k
    unsigned int curve_limit = arg_count - 2;
549
64.4k
    for (; i + 6 <= curve_limit; i += 6)
550
41.2k
    {
551
41.2k
      point_t pt1 = env.get_pt ();
552
41.2k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
41.2k
      point_t pt2 = pt1;
554
41.2k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
41.2k
      point_t pt3 = pt2;
556
41.2k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
41.2k
      PATH::curve (env, param, pt1, pt2, pt3);
558
41.2k
    }
559
560
23.2k
    point_t pt1 = env.get_pt ();
561
23.2k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
23.2k
    PATH::line (env, param, pt1);
563
23.2k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::rcurveline(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
542
20.4k
  {
543
20.4k
    unsigned int arg_count = env.argStack.get_count ();
544
20.4k
    if (unlikely (arg_count < 8))
545
5.12k
      return;
546
547
15.2k
    unsigned int i = 0;
548
15.2k
    unsigned int curve_limit = arg_count - 2;
549
41.5k
    for (; i + 6 <= curve_limit; i += 6)
550
26.3k
    {
551
26.3k
      point_t pt1 = env.get_pt ();
552
26.3k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
26.3k
      point_t pt2 = pt1;
554
26.3k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
26.3k
      point_t pt3 = pt2;
556
26.3k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
26.3k
      PATH::curve (env, param, pt1, pt2, pt3);
558
26.3k
    }
559
560
15.2k
    point_t pt1 = env.get_pt ();
561
15.2k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
15.2k
    PATH::line (env, param, pt1);
563
15.2k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::rcurveline(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
542
42.7k
  {
543
42.7k
    unsigned int arg_count = env.argStack.get_count ();
544
42.7k
    if (unlikely (arg_count < 8))
545
18.2k
      return;
546
547
24.4k
    unsigned int i = 0;
548
24.4k
    unsigned int curve_limit = arg_count - 2;
549
75.3k
    for (; i + 6 <= curve_limit; i += 6)
550
50.8k
    {
551
50.8k
      point_t pt1 = env.get_pt ();
552
50.8k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
50.8k
      point_t pt2 = pt1;
554
50.8k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
50.8k
      point_t pt3 = pt2;
556
50.8k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
50.8k
      PATH::curve (env, param, pt1, pt2, pt3);
558
50.8k
    }
559
560
24.4k
    point_t pt1 = env.get_pt ();
561
24.4k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
24.4k
    PATH::line (env, param, pt1);
563
24.4k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::rcurveline(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
542
185k
  {
543
185k
    unsigned int arg_count = env.argStack.get_count ();
544
185k
    if (unlikely (arg_count < 8))
545
20.3k
      return;
546
547
165k
    unsigned int i = 0;
548
165k
    unsigned int curve_limit = arg_count - 2;
549
381k
    for (; i + 6 <= curve_limit; i += 6)
550
216k
    {
551
216k
      point_t pt1 = env.get_pt ();
552
216k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
553
216k
      point_t pt2 = pt1;
554
216k
      pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
555
216k
      point_t pt3 = pt2;
556
216k
      pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
557
216k
      PATH::curve (env, param, pt1, pt2, pt3);
558
216k
    }
559
560
165k
    point_t pt1 = env.get_pt ();
561
165k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
562
165k
    PATH::line (env, param, pt1);
563
165k
  }
564
565
  static void rlinecurve (ENV &env, PARAM& param)
566
313k
  {
567
313k
    unsigned int arg_count = env.argStack.get_count ();
568
313k
    if (unlikely (arg_count < 8))
569
58.2k
      return;
570
571
255k
    unsigned int i = 0;
572
255k
    unsigned int line_limit = arg_count - 6;
573
739k
    for (; i + 2 <= line_limit; i += 2)
574
484k
    {
575
484k
      point_t pt1 = env.get_pt ();
576
484k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
484k
      PATH::line (env, param, pt1);
578
484k
    }
579
580
255k
    point_t pt1 = env.get_pt ();
581
255k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
255k
    point_t pt2 = pt1;
583
255k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
255k
    point_t pt3 = pt2;
585
255k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
255k
    PATH::curve (env, param, pt1, pt2, pt3);
587
255k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::rlinecurve(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
566
24.1k
  {
567
24.1k
    unsigned int arg_count = env.argStack.get_count ();
568
24.1k
    if (unlikely (arg_count < 8))
569
12.5k
      return;
570
571
11.6k
    unsigned int i = 0;
572
11.6k
    unsigned int line_limit = arg_count - 6;
573
85.6k
    for (; i + 2 <= line_limit; i += 2)
574
74.0k
    {
575
74.0k
      point_t pt1 = env.get_pt ();
576
74.0k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
74.0k
      PATH::line (env, param, pt1);
578
74.0k
    }
579
580
11.6k
    point_t pt1 = env.get_pt ();
581
11.6k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
11.6k
    point_t pt2 = pt1;
583
11.6k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
11.6k
    point_t pt3 = pt2;
585
11.6k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
11.6k
    PATH::curve (env, param, pt1, pt2, pt3);
587
11.6k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::rlinecurve(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
566
9.73k
  {
567
9.73k
    unsigned int arg_count = env.argStack.get_count ();
568
9.73k
    if (unlikely (arg_count < 8))
569
5.60k
      return;
570
571
4.13k
    unsigned int i = 0;
572
4.13k
    unsigned int line_limit = arg_count - 6;
573
39.4k
    for (; i + 2 <= line_limit; i += 2)
574
35.2k
    {
575
35.2k
      point_t pt1 = env.get_pt ();
576
35.2k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
35.2k
      PATH::line (env, param, pt1);
578
35.2k
    }
579
580
4.13k
    point_t pt1 = env.get_pt ();
581
4.13k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
4.13k
    point_t pt2 = pt1;
583
4.13k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
4.13k
    point_t pt3 = pt2;
585
4.13k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
4.13k
    PATH::curve (env, param, pt1, pt2, pt3);
587
4.13k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::rlinecurve(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
566
60.4k
  {
567
60.4k
    unsigned int arg_count = env.argStack.get_count ();
568
60.4k
    if (unlikely (arg_count < 8))
569
19.3k
      return;
570
571
41.0k
    unsigned int i = 0;
572
41.0k
    unsigned int line_limit = arg_count - 6;
573
154k
    for (; i + 2 <= line_limit; i += 2)
574
113k
    {
575
113k
      point_t pt1 = env.get_pt ();
576
113k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
113k
      PATH::line (env, param, pt1);
578
113k
    }
579
580
41.0k
    point_t pt1 = env.get_pt ();
581
41.0k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
41.0k
    point_t pt2 = pt1;
583
41.0k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
41.0k
    point_t pt3 = pt2;
585
41.0k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
41.0k
    PATH::curve (env, param, pt1, pt2, pt3);
587
41.0k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::rlinecurve(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
566
219k
  {
567
219k
    unsigned int arg_count = env.argStack.get_count ();
568
219k
    if (unlikely (arg_count < 8))
569
20.7k
      return;
570
571
198k
    unsigned int i = 0;
572
198k
    unsigned int line_limit = arg_count - 6;
573
460k
    for (; i + 2 <= line_limit; i += 2)
574
261k
    {
575
261k
      point_t pt1 = env.get_pt ();
576
261k
      pt1.move (env.eval_arg (i), env.eval_arg (i+1));
577
261k
      PATH::line (env, param, pt1);
578
261k
    }
579
580
198k
    point_t pt1 = env.get_pt ();
581
198k
    pt1.move (env.eval_arg (i), env.eval_arg (i+1));
582
198k
    point_t pt2 = pt1;
583
198k
    pt2.move (env.eval_arg (i+2), env.eval_arg (i+3));
584
198k
    point_t pt3 = pt2;
585
198k
    pt3.move (env.eval_arg (i+4), env.eval_arg (i+5));
586
198k
    PATH::curve (env, param, pt1, pt2, pt3);
587
198k
  }
588
589
  static void vvcurveto (ENV &env, PARAM& param)
590
246k
  {
591
246k
    unsigned int i = 0;
592
246k
    point_t pt1 = env.get_pt ();
593
246k
    if ((env.argStack.get_count () & 1) != 0)
594
155k
      pt1.move_x (env.eval_arg (i++));
595
567k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
320k
    {
597
320k
      pt1.move_y (env.eval_arg (i));
598
320k
      point_t pt2 = pt1;
599
320k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
320k
      point_t pt3 = pt2;
601
320k
      pt3.move_y (env.eval_arg (i+3));
602
320k
      PATH::curve (env, param, pt1, pt2, pt3);
603
320k
      pt1 = env.get_pt ();
604
320k
    }
605
246k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::vvcurveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
590
38.9k
  {
591
38.9k
    unsigned int i = 0;
592
38.9k
    point_t pt1 = env.get_pt ();
593
38.9k
    if ((env.argStack.get_count () & 1) != 0)
594
23.9k
      pt1.move_x (env.eval_arg (i++));
595
86.5k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
47.6k
    {
597
47.6k
      pt1.move_y (env.eval_arg (i));
598
47.6k
      point_t pt2 = pt1;
599
47.6k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
47.6k
      point_t pt3 = pt2;
601
47.6k
      pt3.move_y (env.eval_arg (i+3));
602
47.6k
      PATH::curve (env, param, pt1, pt2, pt3);
603
47.6k
      pt1 = env.get_pt ();
604
47.6k
    }
605
38.9k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::vvcurveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
590
24.1k
  {
591
24.1k
    unsigned int i = 0;
592
24.1k
    point_t pt1 = env.get_pt ();
593
24.1k
    if ((env.argStack.get_count () & 1) != 0)
594
16.0k
      pt1.move_x (env.eval_arg (i++));
595
52.8k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
28.6k
    {
597
28.6k
      pt1.move_y (env.eval_arg (i));
598
28.6k
      point_t pt2 = pt1;
599
28.6k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
28.6k
      point_t pt3 = pt2;
601
28.6k
      pt3.move_y (env.eval_arg (i+3));
602
28.6k
      PATH::curve (env, param, pt1, pt2, pt3);
603
28.6k
      pt1 = env.get_pt ();
604
28.6k
    }
605
24.1k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::vvcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
590
57.0k
  {
591
57.0k
    unsigned int i = 0;
592
57.0k
    point_t pt1 = env.get_pt ();
593
57.0k
    if ((env.argStack.get_count () & 1) != 0)
594
19.3k
      pt1.move_x (env.eval_arg (i++));
595
159k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
102k
    {
597
102k
      pt1.move_y (env.eval_arg (i));
598
102k
      point_t pt2 = pt1;
599
102k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
102k
      point_t pt3 = pt2;
601
102k
      pt3.move_y (env.eval_arg (i+3));
602
102k
      PATH::curve (env, param, pt1, pt2, pt3);
603
102k
      pt1 = env.get_pt ();
604
102k
    }
605
57.0k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::vvcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
590
126k
  {
591
126k
    unsigned int i = 0;
592
126k
    point_t pt1 = env.get_pt ();
593
126k
    if ((env.argStack.get_count () & 1) != 0)
594
96.2k
      pt1.move_x (env.eval_arg (i++));
595
268k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
596
141k
    {
597
141k
      pt1.move_y (env.eval_arg (i));
598
141k
      point_t pt2 = pt1;
599
141k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
600
141k
      point_t pt3 = pt2;
601
141k
      pt3.move_y (env.eval_arg (i+3));
602
141k
      PATH::curve (env, param, pt1, pt2, pt3);
603
141k
      pt1 = env.get_pt ();
604
141k
    }
605
126k
  }
606
607
  static void hhcurveto (ENV &env, PARAM& param)
608
612k
  {
609
612k
    unsigned int i = 0;
610
612k
    point_t pt1 = env.get_pt ();
611
612k
    if ((env.argStack.get_count () & 1) != 0)
612
457k
      pt1.move_y (env.eval_arg (i++));
613
1.38M
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
776k
    {
615
776k
      pt1.move_x (env.eval_arg (i));
616
776k
      point_t pt2 = pt1;
617
776k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
776k
      point_t pt3 = pt2;
619
776k
      pt3.move_x (env.eval_arg (i+3));
620
776k
      PATH::curve (env, param, pt1, pt2, pt3);
621
776k
      pt1 = env.get_pt ();
622
776k
    }
623
612k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::hhcurveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
608
53.6k
  {
609
53.6k
    unsigned int i = 0;
610
53.6k
    point_t pt1 = env.get_pt ();
611
53.6k
    if ((env.argStack.get_count () & 1) != 0)
612
39.3k
      pt1.move_y (env.eval_arg (i++));
613
118k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
65.1k
    {
615
65.1k
      pt1.move_x (env.eval_arg (i));
616
65.1k
      point_t pt2 = pt1;
617
65.1k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
65.1k
      point_t pt3 = pt2;
619
65.1k
      pt3.move_x (env.eval_arg (i+3));
620
65.1k
      PATH::curve (env, param, pt1, pt2, pt3);
621
65.1k
      pt1 = env.get_pt ();
622
65.1k
    }
623
53.6k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::hhcurveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
608
36.6k
  {
609
36.6k
    unsigned int i = 0;
610
36.6k
    point_t pt1 = env.get_pt ();
611
36.6k
    if ((env.argStack.get_count () & 1) != 0)
612
29.2k
      pt1.move_y (env.eval_arg (i++));
613
82.1k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
45.4k
    {
615
45.4k
      pt1.move_x (env.eval_arg (i));
616
45.4k
      point_t pt2 = pt1;
617
45.4k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
45.4k
      point_t pt3 = pt2;
619
45.4k
      pt3.move_x (env.eval_arg (i+3));
620
45.4k
      PATH::curve (env, param, pt1, pt2, pt3);
621
45.4k
      pt1 = env.get_pt ();
622
45.4k
    }
623
36.6k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::hhcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
608
108k
  {
609
108k
    unsigned int i = 0;
610
108k
    point_t pt1 = env.get_pt ();
611
108k
    if ((env.argStack.get_count () & 1) != 0)
612
71.7k
      pt1.move_y (env.eval_arg (i++));
613
289k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
181k
    {
615
181k
      pt1.move_x (env.eval_arg (i));
616
181k
      point_t pt2 = pt1;
617
181k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
181k
      point_t pt3 = pt2;
619
181k
      pt3.move_x (env.eval_arg (i+3));
620
181k
      PATH::curve (env, param, pt1, pt2, pt3);
621
181k
      pt1 = env.get_pt ();
622
181k
    }
623
108k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::hhcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
608
413k
  {
609
413k
    unsigned int i = 0;
610
413k
    point_t pt1 = env.get_pt ();
611
413k
    if ((env.argStack.get_count () & 1) != 0)
612
316k
      pt1.move_y (env.eval_arg (i++));
613
898k
    for (; i + 4 <= env.argStack.get_count (); i += 4)
614
484k
    {
615
484k
      pt1.move_x (env.eval_arg (i));
616
484k
      point_t pt2 = pt1;
617
484k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
618
484k
      point_t pt3 = pt2;
619
484k
      pt3.move_x (env.eval_arg (i+3));
620
484k
      PATH::curve (env, param, pt1, pt2, pt3);
621
484k
      pt1 = env.get_pt ();
622
484k
    }
623
413k
  }
624
625
  static void vhcurveto (ENV &env, PARAM& param)
626
460k
  {
627
460k
    point_t pt1, pt2, pt3;
628
460k
    unsigned int i = 0;
629
460k
    if ((env.argStack.get_count () % 8) >= 4)
630
285k
    {
631
285k
      point_t pt1 = env.get_pt ();
632
285k
      pt1.move_y (env.eval_arg (i));
633
285k
      point_t pt2 = pt1;
634
285k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
285k
      point_t pt3 = pt2;
636
285k
      pt3.move_x (env.eval_arg (i+3));
637
285k
      i += 4;
638
639
348k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
63.2k
      {
641
63.2k
  PATH::curve (env, param, pt1, pt2, pt3);
642
63.2k
  pt1 = env.get_pt ();
643
63.2k
  pt1.move_x (env.eval_arg (i));
644
63.2k
  pt2 = pt1;
645
63.2k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
63.2k
  pt3 = pt2;
647
63.2k
  pt3.move_y (env.eval_arg (i+3));
648
63.2k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
63.2k
  pt1 = pt3;
651
63.2k
  pt1.move_y (env.eval_arg (i+4));
652
63.2k
  pt2 = pt1;
653
63.2k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
63.2k
  pt3 = pt2;
655
63.2k
  pt3.move_x (env.eval_arg (i+7));
656
63.2k
      }
657
285k
      if (i < env.argStack.get_count ())
658
211k
  pt3.move_y (env.eval_arg (i));
659
285k
      PATH::curve (env, param, pt1, pt2, pt3);
660
285k
    }
661
174k
    else
662
174k
    {
663
269k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
94.7k
      {
665
94.7k
  pt1 = env.get_pt ();
666
94.7k
  pt1.move_y (env.eval_arg (i));
667
94.7k
  pt2 = pt1;
668
94.7k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
94.7k
  pt3 = pt2;
670
94.7k
  pt3.move_x (env.eval_arg (i+3));
671
94.7k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
94.7k
  pt1 = pt3;
674
94.7k
  pt1.move_x (env.eval_arg (i+4));
675
94.7k
  pt2 = pt1;
676
94.7k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
94.7k
  pt3 = pt2;
678
94.7k
  pt3.move_y (env.eval_arg (i+7));
679
94.7k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
25.9k
    pt3.move_x (env.eval_arg (i+8));
681
94.7k
  PATH::curve (env, param, pt1, pt2, pt3);
682
94.7k
      }
683
174k
    }
684
460k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::vhcurveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
626
61.6k
  {
627
61.6k
    point_t pt1, pt2, pt3;
628
61.6k
    unsigned int i = 0;
629
61.6k
    if ((env.argStack.get_count () % 8) >= 4)
630
34.1k
    {
631
34.1k
      point_t pt1 = env.get_pt ();
632
34.1k
      pt1.move_y (env.eval_arg (i));
633
34.1k
      point_t pt2 = pt1;
634
34.1k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
34.1k
      point_t pt3 = pt2;
636
34.1k
      pt3.move_x (env.eval_arg (i+3));
637
34.1k
      i += 4;
638
639
46.3k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
12.1k
      {
641
12.1k
  PATH::curve (env, param, pt1, pt2, pt3);
642
12.1k
  pt1 = env.get_pt ();
643
12.1k
  pt1.move_x (env.eval_arg (i));
644
12.1k
  pt2 = pt1;
645
12.1k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
12.1k
  pt3 = pt2;
647
12.1k
  pt3.move_y (env.eval_arg (i+3));
648
12.1k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
12.1k
  pt1 = pt3;
651
12.1k
  pt1.move_y (env.eval_arg (i+4));
652
12.1k
  pt2 = pt1;
653
12.1k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
12.1k
  pt3 = pt2;
655
12.1k
  pt3.move_x (env.eval_arg (i+7));
656
12.1k
      }
657
34.1k
      if (i < env.argStack.get_count ())
658
28.9k
  pt3.move_y (env.eval_arg (i));
659
34.1k
      PATH::curve (env, param, pt1, pt2, pt3);
660
34.1k
    }
661
27.4k
    else
662
27.4k
    {
663
45.4k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
18.0k
      {
665
18.0k
  pt1 = env.get_pt ();
666
18.0k
  pt1.move_y (env.eval_arg (i));
667
18.0k
  pt2 = pt1;
668
18.0k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
18.0k
  pt3 = pt2;
670
18.0k
  pt3.move_x (env.eval_arg (i+3));
671
18.0k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
18.0k
  pt1 = pt3;
674
18.0k
  pt1.move_x (env.eval_arg (i+4));
675
18.0k
  pt2 = pt1;
676
18.0k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
18.0k
  pt3 = pt2;
678
18.0k
  pt3.move_y (env.eval_arg (i+7));
679
18.0k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
4.20k
    pt3.move_x (env.eval_arg (i+8));
681
18.0k
  PATH::curve (env, param, pt1, pt2, pt3);
682
18.0k
      }
683
27.4k
    }
684
61.6k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::vhcurveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
626
41.4k
  {
627
41.4k
    point_t pt1, pt2, pt3;
628
41.4k
    unsigned int i = 0;
629
41.4k
    if ((env.argStack.get_count () % 8) >= 4)
630
26.5k
    {
631
26.5k
      point_t pt1 = env.get_pt ();
632
26.5k
      pt1.move_y (env.eval_arg (i));
633
26.5k
      point_t pt2 = pt1;
634
26.5k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
26.5k
      point_t pt3 = pt2;
636
26.5k
      pt3.move_x (env.eval_arg (i+3));
637
26.5k
      i += 4;
638
639
33.8k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
7.31k
      {
641
7.31k
  PATH::curve (env, param, pt1, pt2, pt3);
642
7.31k
  pt1 = env.get_pt ();
643
7.31k
  pt1.move_x (env.eval_arg (i));
644
7.31k
  pt2 = pt1;
645
7.31k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
7.31k
  pt3 = pt2;
647
7.31k
  pt3.move_y (env.eval_arg (i+3));
648
7.31k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
7.31k
  pt1 = pt3;
651
7.31k
  pt1.move_y (env.eval_arg (i+4));
652
7.31k
  pt2 = pt1;
653
7.31k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
7.31k
  pt3 = pt2;
655
7.31k
  pt3.move_x (env.eval_arg (i+7));
656
7.31k
      }
657
26.5k
      if (i < env.argStack.get_count ())
658
23.3k
  pt3.move_y (env.eval_arg (i));
659
26.5k
      PATH::curve (env, param, pt1, pt2, pt3);
660
26.5k
    }
661
14.9k
    else
662
14.9k
    {
663
27.5k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
12.6k
      {
665
12.6k
  pt1 = env.get_pt ();
666
12.6k
  pt1.move_y (env.eval_arg (i));
667
12.6k
  pt2 = pt1;
668
12.6k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
12.6k
  pt3 = pt2;
670
12.6k
  pt3.move_x (env.eval_arg (i+3));
671
12.6k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
12.6k
  pt1 = pt3;
674
12.6k
  pt1.move_x (env.eval_arg (i+4));
675
12.6k
  pt2 = pt1;
676
12.6k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
12.6k
  pt3 = pt2;
678
12.6k
  pt3.move_y (env.eval_arg (i+7));
679
12.6k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
3.07k
    pt3.move_x (env.eval_arg (i+8));
681
12.6k
  PATH::curve (env, param, pt1, pt2, pt3);
682
12.6k
      }
683
14.9k
    }
684
41.4k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::vhcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
626
87.8k
  {
627
87.8k
    point_t pt1, pt2, pt3;
628
87.8k
    unsigned int i = 0;
629
87.8k
    if ((env.argStack.get_count () % 8) >= 4)
630
40.6k
    {
631
40.6k
      point_t pt1 = env.get_pt ();
632
40.6k
      pt1.move_y (env.eval_arg (i));
633
40.6k
      point_t pt2 = pt1;
634
40.6k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
40.6k
      point_t pt3 = pt2;
636
40.6k
      pt3.move_x (env.eval_arg (i+3));
637
40.6k
      i += 4;
638
639
68.6k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
27.9k
      {
641
27.9k
  PATH::curve (env, param, pt1, pt2, pt3);
642
27.9k
  pt1 = env.get_pt ();
643
27.9k
  pt1.move_x (env.eval_arg (i));
644
27.9k
  pt2 = pt1;
645
27.9k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
27.9k
  pt3 = pt2;
647
27.9k
  pt3.move_y (env.eval_arg (i+3));
648
27.9k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
27.9k
  pt1 = pt3;
651
27.9k
  pt1.move_y (env.eval_arg (i+4));
652
27.9k
  pt2 = pt1;
653
27.9k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
27.9k
  pt3 = pt2;
655
27.9k
  pt3.move_x (env.eval_arg (i+7));
656
27.9k
      }
657
40.6k
      if (i < env.argStack.get_count ())
658
25.9k
  pt3.move_y (env.eval_arg (i));
659
40.6k
      PATH::curve (env, param, pt1, pt2, pt3);
660
40.6k
    }
661
47.1k
    else
662
47.1k
    {
663
87.7k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
40.5k
      {
665
40.5k
  pt1 = env.get_pt ();
666
40.5k
  pt1.move_y (env.eval_arg (i));
667
40.5k
  pt2 = pt1;
668
40.5k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
40.5k
  pt3 = pt2;
670
40.5k
  pt3.move_x (env.eval_arg (i+3));
671
40.5k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
40.5k
  pt1 = pt3;
674
40.5k
  pt1.move_x (env.eval_arg (i+4));
675
40.5k
  pt2 = pt1;
676
40.5k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
40.5k
  pt3 = pt2;
678
40.5k
  pt3.move_y (env.eval_arg (i+7));
679
40.5k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
12.5k
    pt3.move_x (env.eval_arg (i+8));
681
40.5k
  PATH::curve (env, param, pt1, pt2, pt3);
682
40.5k
      }
683
47.1k
    }
684
87.8k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::vhcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
626
269k
  {
627
269k
    point_t pt1, pt2, pt3;
628
269k
    unsigned int i = 0;
629
269k
    if ((env.argStack.get_count () % 8) >= 4)
630
184k
    {
631
184k
      point_t pt1 = env.get_pt ();
632
184k
      pt1.move_y (env.eval_arg (i));
633
184k
      point_t pt2 = pt1;
634
184k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
635
184k
      point_t pt3 = pt2;
636
184k
      pt3.move_x (env.eval_arg (i+3));
637
184k
      i += 4;
638
639
200k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
640
15.8k
      {
641
15.8k
  PATH::curve (env, param, pt1, pt2, pt3);
642
15.8k
  pt1 = env.get_pt ();
643
15.8k
  pt1.move_x (env.eval_arg (i));
644
15.8k
  pt2 = pt1;
645
15.8k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
646
15.8k
  pt3 = pt2;
647
15.8k
  pt3.move_y (env.eval_arg (i+3));
648
15.8k
  PATH::curve (env, param, pt1, pt2, pt3);
649
650
15.8k
  pt1 = pt3;
651
15.8k
  pt1.move_y (env.eval_arg (i+4));
652
15.8k
  pt2 = pt1;
653
15.8k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
654
15.8k
  pt3 = pt2;
655
15.8k
  pt3.move_x (env.eval_arg (i+7));
656
15.8k
      }
657
184k
      if (i < env.argStack.get_count ())
658
132k
  pt3.move_y (env.eval_arg (i));
659
184k
      PATH::curve (env, param, pt1, pt2, pt3);
660
184k
    }
661
84.9k
    else
662
84.9k
    {
663
108k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
664
23.5k
      {
665
23.5k
  pt1 = env.get_pt ();
666
23.5k
  pt1.move_y (env.eval_arg (i));
667
23.5k
  pt2 = pt1;
668
23.5k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
669
23.5k
  pt3 = pt2;
670
23.5k
  pt3.move_x (env.eval_arg (i+3));
671
23.5k
  PATH::curve (env, param, pt1, pt2, pt3);
672
673
23.5k
  pt1 = pt3;
674
23.5k
  pt1.move_x (env.eval_arg (i+4));
675
23.5k
  pt2 = pt1;
676
23.5k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
677
23.5k
  pt3 = pt2;
678
23.5k
  pt3.move_y (env.eval_arg (i+7));
679
23.5k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
680
6.06k
    pt3.move_x (env.eval_arg (i+8));
681
23.5k
  PATH::curve (env, param, pt1, pt2, pt3);
682
23.5k
      }
683
84.9k
    }
684
269k
  }
685
686
  static void hvcurveto (ENV &env, PARAM& param)
687
576k
  {
688
576k
    point_t pt1, pt2, pt3;
689
576k
    unsigned int i = 0;
690
576k
    if ((env.argStack.get_count () % 8) >= 4)
691
484k
    {
692
484k
      point_t pt1 = env.get_pt ();
693
484k
      pt1.move_x (env.eval_arg (i));
694
484k
      point_t pt2 = pt1;
695
484k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
484k
      point_t pt3 = pt2;
697
484k
      pt3.move_y (env.eval_arg (i+3));
698
484k
      i += 4;
699
700
584k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
100k
      {
702
100k
  PATH::curve (env, param, pt1, pt2, pt3);
703
100k
  pt1 = env.get_pt ();
704
100k
  pt1.move_y (env.eval_arg (i));
705
100k
  pt2 = pt1;
706
100k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
100k
  pt3 = pt2;
708
100k
  pt3.move_x (env.eval_arg (i+3));
709
100k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
100k
  pt1 = pt3;
712
100k
  pt1.move_x (env.eval_arg (i+4));
713
100k
  pt2 = pt1;
714
100k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
100k
  pt3 = pt2;
716
100k
  pt3.move_y (env.eval_arg (i+7));
717
100k
      }
718
484k
      if (i < env.argStack.get_count ())
719
400k
  pt3.move_x (env.eval_arg (i));
720
484k
      PATH::curve (env, param, pt1, pt2, pt3);
721
484k
    }
722
92.1k
    else
723
92.1k
    {
724
205k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
113k
      {
726
113k
  pt1 = env.get_pt ();
727
113k
  pt1.move_x (env.eval_arg (i));
728
113k
  pt2 = pt1;
729
113k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
113k
  pt3 = pt2;
731
113k
  pt3.move_y (env.eval_arg (i+3));
732
113k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
113k
  pt1 = pt3;
735
113k
  pt1.move_y (env.eval_arg (i+4));
736
113k
  pt2 = pt1;
737
113k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
113k
  pt3 = pt2;
739
113k
  pt3.move_x (env.eval_arg (i+7));
740
113k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
26.2k
    pt3.move_y (env.eval_arg (i+8));
742
113k
  PATH::curve (env, param, pt1, pt2, pt3);
743
113k
      }
744
92.1k
    }
745
576k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::hvcurveto(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
687
68.9k
  {
688
68.9k
    point_t pt1, pt2, pt3;
689
68.9k
    unsigned int i = 0;
690
68.9k
    if ((env.argStack.get_count () % 8) >= 4)
691
43.5k
    {
692
43.5k
      point_t pt1 = env.get_pt ();
693
43.5k
      pt1.move_x (env.eval_arg (i));
694
43.5k
      point_t pt2 = pt1;
695
43.5k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
43.5k
      point_t pt3 = pt2;
697
43.5k
      pt3.move_y (env.eval_arg (i+3));
698
43.5k
      i += 4;
699
700
63.7k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
20.2k
      {
702
20.2k
  PATH::curve (env, param, pt1, pt2, pt3);
703
20.2k
  pt1 = env.get_pt ();
704
20.2k
  pt1.move_y (env.eval_arg (i));
705
20.2k
  pt2 = pt1;
706
20.2k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
20.2k
  pt3 = pt2;
708
20.2k
  pt3.move_x (env.eval_arg (i+3));
709
20.2k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
20.2k
  pt1 = pt3;
712
20.2k
  pt1.move_x (env.eval_arg (i+4));
713
20.2k
  pt2 = pt1;
714
20.2k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
20.2k
  pt3 = pt2;
716
20.2k
  pt3.move_y (env.eval_arg (i+7));
717
20.2k
      }
718
43.5k
      if (i < env.argStack.get_count ())
719
36.3k
  pt3.move_x (env.eval_arg (i));
720
43.5k
      PATH::curve (env, param, pt1, pt2, pt3);
721
43.5k
    }
722
25.4k
    else
723
25.4k
    {
724
58.9k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
33.4k
      {
726
33.4k
  pt1 = env.get_pt ();
727
33.4k
  pt1.move_x (env.eval_arg (i));
728
33.4k
  pt2 = pt1;
729
33.4k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
33.4k
  pt3 = pt2;
731
33.4k
  pt3.move_y (env.eval_arg (i+3));
732
33.4k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
33.4k
  pt1 = pt3;
735
33.4k
  pt1.move_y (env.eval_arg (i+4));
736
33.4k
  pt2 = pt1;
737
33.4k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
33.4k
  pt3 = pt2;
739
33.4k
  pt3.move_x (env.eval_arg (i+7));
740
33.4k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
5.15k
    pt3.move_y (env.eval_arg (i+8));
742
33.4k
  PATH::curve (env, param, pt1, pt2, pt3);
743
33.4k
      }
744
25.4k
    }
745
68.9k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::hvcurveto(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
687
37.8k
  {
688
37.8k
    point_t pt1, pt2, pt3;
689
37.8k
    unsigned int i = 0;
690
37.8k
    if ((env.argStack.get_count () % 8) >= 4)
691
26.1k
    {
692
26.1k
      point_t pt1 = env.get_pt ();
693
26.1k
      pt1.move_x (env.eval_arg (i));
694
26.1k
      point_t pt2 = pt1;
695
26.1k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
26.1k
      point_t pt3 = pt2;
697
26.1k
      pt3.move_y (env.eval_arg (i+3));
698
26.1k
      i += 4;
699
700
35.7k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
9.67k
      {
702
9.67k
  PATH::curve (env, param, pt1, pt2, pt3);
703
9.67k
  pt1 = env.get_pt ();
704
9.67k
  pt1.move_y (env.eval_arg (i));
705
9.67k
  pt2 = pt1;
706
9.67k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
9.67k
  pt3 = pt2;
708
9.67k
  pt3.move_x (env.eval_arg (i+3));
709
9.67k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
9.67k
  pt1 = pt3;
712
9.67k
  pt1.move_x (env.eval_arg (i+4));
713
9.67k
  pt2 = pt1;
714
9.67k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
9.67k
  pt3 = pt2;
716
9.67k
  pt3.move_y (env.eval_arg (i+7));
717
9.67k
      }
718
26.1k
      if (i < env.argStack.get_count ())
719
21.7k
  pt3.move_x (env.eval_arg (i));
720
26.1k
      PATH::curve (env, param, pt1, pt2, pt3);
721
26.1k
    }
722
11.7k
    else
723
11.7k
    {
724
24.8k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
13.1k
      {
726
13.1k
  pt1 = env.get_pt ();
727
13.1k
  pt1.move_x (env.eval_arg (i));
728
13.1k
  pt2 = pt1;
729
13.1k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
13.1k
  pt3 = pt2;
731
13.1k
  pt3.move_y (env.eval_arg (i+3));
732
13.1k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
13.1k
  pt1 = pt3;
735
13.1k
  pt1.move_y (env.eval_arg (i+4));
736
13.1k
  pt2 = pt1;
737
13.1k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
13.1k
  pt3 = pt2;
739
13.1k
  pt3.move_x (env.eval_arg (i+7));
740
13.1k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
1.92k
    pt3.move_y (env.eval_arg (i+8));
742
13.1k
  PATH::curve (env, param, pt1, pt2, pt3);
743
13.1k
      }
744
11.7k
    }
745
37.8k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::hvcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
687
118k
  {
688
118k
    point_t pt1, pt2, pt3;
689
118k
    unsigned int i = 0;
690
118k
    if ((env.argStack.get_count () % 8) >= 4)
691
89.6k
    {
692
89.6k
      point_t pt1 = env.get_pt ();
693
89.6k
      pt1.move_x (env.eval_arg (i));
694
89.6k
      point_t pt2 = pt1;
695
89.6k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
89.6k
      point_t pt3 = pt2;
697
89.6k
      pt3.move_y (env.eval_arg (i+3));
698
89.6k
      i += 4;
699
700
135k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
46.1k
      {
702
46.1k
  PATH::curve (env, param, pt1, pt2, pt3);
703
46.1k
  pt1 = env.get_pt ();
704
46.1k
  pt1.move_y (env.eval_arg (i));
705
46.1k
  pt2 = pt1;
706
46.1k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
46.1k
  pt3 = pt2;
708
46.1k
  pt3.move_x (env.eval_arg (i+3));
709
46.1k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
46.1k
  pt1 = pt3;
712
46.1k
  pt1.move_x (env.eval_arg (i+4));
713
46.1k
  pt2 = pt1;
714
46.1k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
46.1k
  pt3 = pt2;
716
46.1k
  pt3.move_y (env.eval_arg (i+7));
717
46.1k
      }
718
89.6k
      if (i < env.argStack.get_count ())
719
60.9k
  pt3.move_x (env.eval_arg (i));
720
89.6k
      PATH::curve (env, param, pt1, pt2, pt3);
721
89.6k
    }
722
28.9k
    else
723
28.9k
    {
724
63.4k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
34.4k
      {
726
34.4k
  pt1 = env.get_pt ();
727
34.4k
  pt1.move_x (env.eval_arg (i));
728
34.4k
  pt2 = pt1;
729
34.4k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
34.4k
  pt3 = pt2;
731
34.4k
  pt3.move_y (env.eval_arg (i+3));
732
34.4k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
34.4k
  pt1 = pt3;
735
34.4k
  pt1.move_y (env.eval_arg (i+4));
736
34.4k
  pt2 = pt1;
737
34.4k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
34.4k
  pt3 = pt2;
739
34.4k
  pt3.move_x (env.eval_arg (i+7));
740
34.4k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
7.42k
    pt3.move_y (env.eval_arg (i+8));
742
34.4k
  PATH::curve (env, param, pt1, pt2, pt3);
743
34.4k
      }
744
28.9k
    }
745
118k
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::hvcurveto(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
687
351k
  {
688
351k
    point_t pt1, pt2, pt3;
689
351k
    unsigned int i = 0;
690
351k
    if ((env.argStack.get_count () % 8) >= 4)
691
325k
    {
692
325k
      point_t pt1 = env.get_pt ();
693
325k
      pt1.move_x (env.eval_arg (i));
694
325k
      point_t pt2 = pt1;
695
325k
      pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
696
325k
      point_t pt3 = pt2;
697
325k
      pt3.move_y (env.eval_arg (i+3));
698
325k
      i += 4;
699
700
349k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
701
24.1k
      {
702
24.1k
  PATH::curve (env, param, pt1, pt2, pt3);
703
24.1k
  pt1 = env.get_pt ();
704
24.1k
  pt1.move_y (env.eval_arg (i));
705
24.1k
  pt2 = pt1;
706
24.1k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
707
24.1k
  pt3 = pt2;
708
24.1k
  pt3.move_x (env.eval_arg (i+3));
709
24.1k
  PATH::curve (env, param, pt1, pt2, pt3);
710
711
24.1k
  pt1 = pt3;
712
24.1k
  pt1.move_x (env.eval_arg (i+4));
713
24.1k
  pt2 = pt1;
714
24.1k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
715
24.1k
  pt3 = pt2;
716
24.1k
  pt3.move_y (env.eval_arg (i+7));
717
24.1k
      }
718
325k
      if (i < env.argStack.get_count ())
719
281k
  pt3.move_x (env.eval_arg (i));
720
325k
      PATH::curve (env, param, pt1, pt2, pt3);
721
325k
    }
722
25.9k
    else
723
25.9k
    {
724
58.2k
      for (; i + 8 <= env.argStack.get_count (); i += 8)
725
32.2k
      {
726
32.2k
  pt1 = env.get_pt ();
727
32.2k
  pt1.move_x (env.eval_arg (i));
728
32.2k
  pt2 = pt1;
729
32.2k
  pt2.move (env.eval_arg (i+1), env.eval_arg (i+2));
730
32.2k
  pt3 = pt2;
731
32.2k
  pt3.move_y (env.eval_arg (i+3));
732
32.2k
  PATH::curve (env, param, pt1, pt2, pt3);
733
734
32.2k
  pt1 = pt3;
735
32.2k
  pt1.move_y (env.eval_arg (i+4));
736
32.2k
  pt2 = pt1;
737
32.2k
  pt2.move (env.eval_arg (i+5), env.eval_arg (i+6));
738
32.2k
  pt3 = pt2;
739
32.2k
  pt3.move_x (env.eval_arg (i+7));
740
32.2k
  if ((env.argStack.get_count () - i < 16) && ((env.argStack.get_count () & 1) != 0))
741
11.7k
    pt3.move_y (env.eval_arg (i+8));
742
32.2k
  PATH::curve (env, param, pt1, pt2, pt3);
743
32.2k
      }
744
25.9k
    }
745
351k
  }
746
747
  /* default actions to be overridden */
748
  static void moveto (ENV &env, PARAM& param, const point_t &pt)
749
  { env.moveto (pt); }
750
751
  static void line (ENV &env, PARAM& param, const point_t &pt1)
752
  { PATH::moveto (env, param, pt1); }
753
754
  static void curve (ENV &env, PARAM& param, const point_t &pt1, const point_t &pt2, const point_t &pt3)
755
  { PATH::moveto (env, param, pt3); }
756
757
  static void hflex (ENV &env, PARAM& param)
758
1.16k
  {
759
1.16k
    if (likely (env.argStack.get_count () == 7))
760
416
    {
761
416
      point_t pt1 = env.get_pt ();
762
416
      pt1.move_x (env.eval_arg (0));
763
416
      point_t pt2 = pt1;
764
416
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
416
      point_t pt3 = pt2;
766
416
      pt3.move_x (env.eval_arg (3));
767
416
      point_t pt4 = pt3;
768
416
      pt4.move_x (env.eval_arg (4));
769
416
      point_t pt5 = pt4;
770
416
      pt5.move_x (env.eval_arg (5));
771
416
      pt5.y = pt1.y;
772
416
      point_t pt6 = pt5;
773
416
      pt6.move_x (env.eval_arg (6));
774
775
416
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
416
    }
777
746
    else
778
746
      env.set_error ();
779
1.16k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::hflex(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
758
411
  {
759
411
    if (likely (env.argStack.get_count () == 7))
760
221
    {
761
221
      point_t pt1 = env.get_pt ();
762
221
      pt1.move_x (env.eval_arg (0));
763
221
      point_t pt2 = pt1;
764
221
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
221
      point_t pt3 = pt2;
766
221
      pt3.move_x (env.eval_arg (3));
767
221
      point_t pt4 = pt3;
768
221
      pt4.move_x (env.eval_arg (4));
769
221
      point_t pt5 = pt4;
770
221
      pt5.move_x (env.eval_arg (5));
771
221
      pt5.y = pt1.y;
772
221
      point_t pt6 = pt5;
773
221
      pt6.move_x (env.eval_arg (6));
774
775
221
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
221
    }
777
190
    else
778
190
      env.set_error ();
779
411
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::hflex(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
758
107
  {
759
107
    if (likely (env.argStack.get_count () == 7))
760
53
    {
761
53
      point_t pt1 = env.get_pt ();
762
53
      pt1.move_x (env.eval_arg (0));
763
53
      point_t pt2 = pt1;
764
53
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
53
      point_t pt3 = pt2;
766
53
      pt3.move_x (env.eval_arg (3));
767
53
      point_t pt4 = pt3;
768
53
      pt4.move_x (env.eval_arg (4));
769
53
      point_t pt5 = pt4;
770
53
      pt5.move_x (env.eval_arg (5));
771
53
      pt5.y = pt1.y;
772
53
      point_t pt6 = pt5;
773
53
      pt6.move_x (env.eval_arg (6));
774
775
53
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
53
    }
777
54
    else
778
54
      env.set_error ();
779
107
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::hflex(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
758
249
  {
759
249
    if (likely (env.argStack.get_count () == 7))
760
88
    {
761
88
      point_t pt1 = env.get_pt ();
762
88
      pt1.move_x (env.eval_arg (0));
763
88
      point_t pt2 = pt1;
764
88
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
88
      point_t pt3 = pt2;
766
88
      pt3.move_x (env.eval_arg (3));
767
88
      point_t pt4 = pt3;
768
88
      pt4.move_x (env.eval_arg (4));
769
88
      point_t pt5 = pt4;
770
88
      pt5.move_x (env.eval_arg (5));
771
88
      pt5.y = pt1.y;
772
88
      point_t pt6 = pt5;
773
88
      pt6.move_x (env.eval_arg (6));
774
775
88
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
88
    }
777
161
    else
778
161
      env.set_error ();
779
249
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::hflex(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
758
395
  {
759
395
    if (likely (env.argStack.get_count () == 7))
760
54
    {
761
54
      point_t pt1 = env.get_pt ();
762
54
      pt1.move_x (env.eval_arg (0));
763
54
      point_t pt2 = pt1;
764
54
      pt2.move (env.eval_arg (1), env.eval_arg (2));
765
54
      point_t pt3 = pt2;
766
54
      pt3.move_x (env.eval_arg (3));
767
54
      point_t pt4 = pt3;
768
54
      pt4.move_x (env.eval_arg (4));
769
54
      point_t pt5 = pt4;
770
54
      pt5.move_x (env.eval_arg (5));
771
54
      pt5.y = pt1.y;
772
54
      point_t pt6 = pt5;
773
54
      pt6.move_x (env.eval_arg (6));
774
775
54
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
776
54
    }
777
341
    else
778
341
      env.set_error ();
779
395
  }
780
781
  static void flex (ENV &env, PARAM& param)
782
8.95k
  {
783
8.95k
    if (likely (env.argStack.get_count () == 13))
784
8.09k
    {
785
8.09k
      point_t pt1 = env.get_pt ();
786
8.09k
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
8.09k
      point_t pt2 = pt1;
788
8.09k
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
8.09k
      point_t pt3 = pt2;
790
8.09k
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
8.09k
      point_t pt4 = pt3;
792
8.09k
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
8.09k
      point_t pt5 = pt4;
794
8.09k
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
8.09k
      point_t pt6 = pt5;
796
8.09k
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
8.09k
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
8.09k
    }
800
853
    else
801
853
      env.set_error ();
802
8.95k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::flex(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
782
6.51k
  {
783
6.51k
    if (likely (env.argStack.get_count () == 13))
784
6.30k
    {
785
6.30k
      point_t pt1 = env.get_pt ();
786
6.30k
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
6.30k
      point_t pt2 = pt1;
788
6.30k
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
6.30k
      point_t pt3 = pt2;
790
6.30k
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
6.30k
      point_t pt4 = pt3;
792
6.30k
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
6.30k
      point_t pt5 = pt4;
794
6.30k
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
6.30k
      point_t pt6 = pt5;
796
6.30k
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
6.30k
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
6.30k
    }
800
212
    else
801
212
      env.set_error ();
802
6.51k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::flex(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
782
1.21k
  {
783
1.21k
    if (likely (env.argStack.get_count () == 13))
784
1.16k
    {
785
1.16k
      point_t pt1 = env.get_pt ();
786
1.16k
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
1.16k
      point_t pt2 = pt1;
788
1.16k
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
1.16k
      point_t pt3 = pt2;
790
1.16k
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
1.16k
      point_t pt4 = pt3;
792
1.16k
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
1.16k
      point_t pt5 = pt4;
794
1.16k
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
1.16k
      point_t pt6 = pt5;
796
1.16k
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
1.16k
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
1.16k
    }
800
51
    else
801
51
      env.set_error ();
802
1.21k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::flex(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
782
250
  {
783
250
    if (likely (env.argStack.get_count () == 13))
784
83
    {
785
83
      point_t pt1 = env.get_pt ();
786
83
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
83
      point_t pt2 = pt1;
788
83
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
83
      point_t pt3 = pt2;
790
83
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
83
      point_t pt4 = pt3;
792
83
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
83
      point_t pt5 = pt4;
794
83
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
83
      point_t pt6 = pt5;
796
83
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
83
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
83
    }
800
167
    else
801
167
      env.set_error ();
802
250
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::flex(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
782
969
  {
783
969
    if (likely (env.argStack.get_count () == 13))
784
546
    {
785
546
      point_t pt1 = env.get_pt ();
786
546
      pt1.move (env.eval_arg (0), env.eval_arg (1));
787
546
      point_t pt2 = pt1;
788
546
      pt2.move (env.eval_arg (2), env.eval_arg (3));
789
546
      point_t pt3 = pt2;
790
546
      pt3.move (env.eval_arg (4), env.eval_arg (5));
791
546
      point_t pt4 = pt3;
792
546
      pt4.move (env.eval_arg (6), env.eval_arg (7));
793
546
      point_t pt5 = pt4;
794
546
      pt5.move (env.eval_arg (8), env.eval_arg (9));
795
546
      point_t pt6 = pt5;
796
546
      pt6.move (env.eval_arg (10), env.eval_arg (11));
797
798
546
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
799
546
    }
800
423
    else
801
423
      env.set_error ();
802
969
  }
803
804
  static void hflex1 (ENV &env, PARAM& param)
805
2.22k
  {
806
2.22k
    if (likely (env.argStack.get_count () == 9))
807
890
    {
808
890
      point_t pt1 = env.get_pt ();
809
890
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
890
      point_t pt2 = pt1;
811
890
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
890
      point_t pt3 = pt2;
813
890
      pt3.move_x (env.eval_arg (4));
814
890
      point_t pt4 = pt3;
815
890
      pt4.move_x (env.eval_arg (5));
816
890
      point_t pt5 = pt4;
817
890
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
890
      point_t pt6 = pt5;
819
890
      pt6.move_x (env.eval_arg (8));
820
890
      pt6.y = env.get_pt ().y;
821
822
890
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
890
    }
824
1.33k
    else
825
1.33k
      env.set_error ();
826
2.22k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::hflex1(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
805
603
  {
806
603
    if (likely (env.argStack.get_count () == 9))
807
360
    {
808
360
      point_t pt1 = env.get_pt ();
809
360
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
360
      point_t pt2 = pt1;
811
360
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
360
      point_t pt3 = pt2;
813
360
      pt3.move_x (env.eval_arg (4));
814
360
      point_t pt4 = pt3;
815
360
      pt4.move_x (env.eval_arg (5));
816
360
      point_t pt5 = pt4;
817
360
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
360
      point_t pt6 = pt5;
819
360
      pt6.move_x (env.eval_arg (8));
820
360
      pt6.y = env.get_pt ().y;
821
822
360
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
360
    }
824
243
    else
825
243
      env.set_error ();
826
603
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::hflex1(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
805
118
  {
806
118
    if (likely (env.argStack.get_count () == 9))
807
57
    {
808
57
      point_t pt1 = env.get_pt ();
809
57
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
57
      point_t pt2 = pt1;
811
57
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
57
      point_t pt3 = pt2;
813
57
      pt3.move_x (env.eval_arg (4));
814
57
      point_t pt4 = pt3;
815
57
      pt4.move_x (env.eval_arg (5));
816
57
      point_t pt5 = pt4;
817
57
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
57
      point_t pt6 = pt5;
819
57
      pt6.move_x (env.eval_arg (8));
820
57
      pt6.y = env.get_pt ().y;
821
822
57
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
57
    }
824
61
    else
825
61
      env.set_error ();
826
118
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::hflex1(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
805
318
  {
806
318
    if (likely (env.argStack.get_count () == 9))
807
147
    {
808
147
      point_t pt1 = env.get_pt ();
809
147
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
147
      point_t pt2 = pt1;
811
147
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
147
      point_t pt3 = pt2;
813
147
      pt3.move_x (env.eval_arg (4));
814
147
      point_t pt4 = pt3;
815
147
      pt4.move_x (env.eval_arg (5));
816
147
      point_t pt5 = pt4;
817
147
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
147
      point_t pt6 = pt5;
819
147
      pt6.move_x (env.eval_arg (8));
820
147
      pt6.y = env.get_pt ().y;
821
822
147
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
147
    }
824
171
    else
825
171
      env.set_error ();
826
318
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::hflex1(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
805
1.18k
  {
806
1.18k
    if (likely (env.argStack.get_count () == 9))
807
326
    {
808
326
      point_t pt1 = env.get_pt ();
809
326
      pt1.move (env.eval_arg (0), env.eval_arg (1));
810
326
      point_t pt2 = pt1;
811
326
      pt2.move (env.eval_arg (2), env.eval_arg (3));
812
326
      point_t pt3 = pt2;
813
326
      pt3.move_x (env.eval_arg (4));
814
326
      point_t pt4 = pt3;
815
326
      pt4.move_x (env.eval_arg (5));
816
326
      point_t pt5 = pt4;
817
326
      pt5.move (env.eval_arg (6), env.eval_arg (7));
818
326
      point_t pt6 = pt5;
819
326
      pt6.move_x (env.eval_arg (8));
820
326
      pt6.y = env.get_pt ().y;
821
822
326
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
823
326
    }
824
860
    else
825
860
      env.set_error ();
826
1.18k
  }
827
828
  static void flex1 (ENV &env, PARAM& param)
829
1.50k
  {
830
1.50k
    if (likely (env.argStack.get_count () == 11))
831
406
    {
832
406
      point_t d;
833
2.43k
      for (unsigned int i = 0; i < 10; i += 2)
834
2.03k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
406
      point_t pt1 = env.get_pt ();
837
406
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
406
      point_t pt2 = pt1;
839
406
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
406
      point_t pt3 = pt2;
841
406
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
406
      point_t pt4 = pt3;
843
406
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
406
      point_t pt5 = pt4;
845
406
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
406
      point_t pt6 = pt5;
847
848
406
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
190
      {
850
190
  pt6.move_x (env.eval_arg (10));
851
190
  pt6.y = env.get_pt ().y;
852
190
      }
853
216
      else
854
216
      {
855
216
  pt6.x = env.get_pt ().x;
856
216
  pt6.move_y (env.eval_arg (10));
857
216
      }
858
859
406
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
406
    }
861
1.09k
    else
862
1.09k
      env.set_error ();
863
1.50k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::flex1(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&)
Line
Count
Source
829
414
  {
830
414
    if (likely (env.argStack.get_count () == 11))
831
213
    {
832
213
      point_t d;
833
1.27k
      for (unsigned int i = 0; i < 10; i += 2)
834
1.06k
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
213
      point_t pt1 = env.get_pt ();
837
213
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
213
      point_t pt2 = pt1;
839
213
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
213
      point_t pt3 = pt2;
841
213
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
213
      point_t pt4 = pt3;
843
213
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
213
      point_t pt5 = pt4;
845
213
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
213
      point_t pt6 = pt5;
847
848
213
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
82
      {
850
82
  pt6.move_x (env.eval_arg (10));
851
82
  pt6.y = env.get_pt ().y;
852
82
      }
853
131
      else
854
131
      {
855
131
  pt6.x = env.get_pt ().x;
856
131
  pt6.move_y (env.eval_arg (10));
857
131
      }
858
859
213
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
213
    }
861
201
    else
862
201
      env.set_error ();
863
414
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::flex1(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&)
Line
Count
Source
829
126
  {
830
126
    if (likely (env.argStack.get_count () == 11))
831
68
    {
832
68
      point_t d;
833
408
      for (unsigned int i = 0; i < 10; i += 2)
834
340
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
68
      point_t pt1 = env.get_pt ();
837
68
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
68
      point_t pt2 = pt1;
839
68
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
68
      point_t pt3 = pt2;
841
68
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
68
      point_t pt4 = pt3;
843
68
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
68
      point_t pt5 = pt4;
845
68
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
68
      point_t pt6 = pt5;
847
848
68
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
29
      {
850
29
  pt6.move_x (env.eval_arg (10));
851
29
  pt6.y = env.get_pt ().y;
852
29
      }
853
39
      else
854
39
      {
855
39
  pt6.x = env.get_pt ().x;
856
39
  pt6.move_y (env.eval_arg (10));
857
39
      }
858
859
68
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
68
    }
861
58
    else
862
58
      env.set_error ();
863
126
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::flex1(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&)
Line
Count
Source
829
233
  {
830
233
    if (likely (env.argStack.get_count () == 11))
831
90
    {
832
90
      point_t d;
833
540
      for (unsigned int i = 0; i < 10; i += 2)
834
450
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
90
      point_t pt1 = env.get_pt ();
837
90
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
90
      point_t pt2 = pt1;
839
90
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
90
      point_t pt3 = pt2;
841
90
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
90
      point_t pt4 = pt3;
843
90
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
90
      point_t pt5 = pt4;
845
90
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
90
      point_t pt6 = pt5;
847
848
90
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
57
      {
850
57
  pt6.move_x (env.eval_arg (10));
851
57
  pt6.y = env.get_pt ().y;
852
57
      }
853
33
      else
854
33
      {
855
33
  pt6.x = env.get_pt ().x;
856
33
  pt6.move_y (env.eval_arg (10));
857
33
      }
858
859
90
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
90
    }
861
143
    else
862
143
      env.set_error ();
863
233
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::flex1(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&)
Line
Count
Source
829
727
  {
830
727
    if (likely (env.argStack.get_count () == 11))
831
35
    {
832
35
      point_t d;
833
210
      for (unsigned int i = 0; i < 10; i += 2)
834
175
  d.move (env.eval_arg (i), env.eval_arg (i+1));
835
836
35
      point_t pt1 = env.get_pt ();
837
35
      pt1.move (env.eval_arg (0), env.eval_arg (1));
838
35
      point_t pt2 = pt1;
839
35
      pt2.move (env.eval_arg (2), env.eval_arg (3));
840
35
      point_t pt3 = pt2;
841
35
      pt3.move (env.eval_arg (4), env.eval_arg (5));
842
35
      point_t pt4 = pt3;
843
35
      pt4.move (env.eval_arg (6), env.eval_arg (7));
844
35
      point_t pt5 = pt4;
845
35
      pt5.move (env.eval_arg (8), env.eval_arg (9));
846
35
      point_t pt6 = pt5;
847
848
35
      if (fabs (d.x.to_real ()) > fabs (d.y.to_real ()))
849
22
      {
850
22
  pt6.move_x (env.eval_arg (10));
851
22
  pt6.y = env.get_pt ().y;
852
22
      }
853
13
      else
854
13
      {
855
13
  pt6.x = env.get_pt ().x;
856
13
  pt6.move_y (env.eval_arg (10));
857
13
      }
858
859
35
      curve2 (env, param, pt1, pt2, pt3, pt4, pt5, pt6);
860
35
    }
861
692
    else
862
692
      env.set_error ();
863
727
  }
864
865
  protected:
866
  static void curve2 (ENV &env, PARAM& param,
867
          const point_t &pt1, const point_t &pt2, const point_t &pt3,
868
          const point_t &pt4, const point_t &pt5, const point_t &pt6)
869
9.81k
  {
870
9.81k
    PATH::curve (env, param, pt1, pt2, pt3);
871
9.81k
    PATH::curve (env, param, pt4, pt5, pt6);
872
9.81k
  }
CFF::path_procs_t<cff1_path_procs_extents_t, CFF::cff1_cs_interp_env_t, cff1_extents_param_t>::curve2(CFF::cff1_cs_interp_env_t&, cff1_extents_param_t&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&)
Line
Count
Source
869
7.09k
  {
870
7.09k
    PATH::curve (env, param, pt1, pt2, pt3);
871
7.09k
    PATH::curve (env, param, pt4, pt5, pt6);
872
7.09k
  }
CFF::path_procs_t<cff1_path_procs_path_t, CFF::cff1_cs_interp_env_t, cff1_path_param_t>::curve2(CFF::cff1_cs_interp_env_t&, cff1_path_param_t&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&)
Line
Count
Source
869
1.34k
  {
870
1.34k
    PATH::curve (env, param, pt1, pt2, pt3);
871
1.34k
    PATH::curve (env, param, pt4, pt5, pt6);
872
1.34k
  }
CFF::path_procs_t<cff2_path_procs_extents_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_extents_param_t>::curve2(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_extents_param_t&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&)
Line
Count
Source
869
408
  {
870
408
    PATH::curve (env, param, pt1, pt2, pt3);
871
408
    PATH::curve (env, param, pt4, pt5, pt6);
872
408
  }
CFF::path_procs_t<cff2_path_procs_path_t, CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_path_param_t>::curve2(CFF::cff2_cs_interp_env_t<CFF::number_t>&, cff2_path_param_t&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&, CFF::point_t const&)
Line
Count
Source
869
961
  {
870
961
    PATH::curve (env, param, pt1, pt2, pt3);
871
961
    PATH::curve (env, param, pt4, pt5, pt6);
872
961
  }
873
};
874
875
template <typename ENV, typename OPSET, typename PARAM>
876
struct cs_interpreter_t : interpreter_t<ENV>
877
{
878
414k
  cs_interpreter_t (ENV& env_) : interpreter_t<ENV> (env_) {}
CFF::cs_interpreter_t<CFF::cff1_cs_interp_env_t, cff1_cs_opset_extents_t, cff1_extents_param_t>::cs_interpreter_t(CFF::cff1_cs_interp_env_t&)
Line
Count
Source
878
76.9k
  cs_interpreter_t (ENV& env_) : interpreter_t<ENV> (env_) {}
CFF::cs_interpreter_t<CFF::cff1_cs_interp_env_t, cff1_cs_opset_path_t, cff1_path_param_t>::cs_interpreter_t(CFF::cff1_cs_interp_env_t&)
Line
Count
Source
878
25.8k
  cs_interpreter_t (ENV& env_) : interpreter_t<ENV> (env_) {}
Unexecuted instantiation: CFF::cs_interpreter_t<CFF::cff1_cs_interp_env_t, cff1_cs_opset_seac_t, get_seac_param_t>::cs_interpreter_t(CFF::cff1_cs_interp_env_t&)
CFF::cs_interpreter_t<CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_cs_opset_extents_t, cff2_extents_param_t>::cs_interpreter_t(CFF::cff2_cs_interp_env_t<CFF::number_t>&)
Line
Count
Source
878
32.5k
  cs_interpreter_t (ENV& env_) : interpreter_t<ENV> (env_) {}
CFF::cs_interpreter_t<CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_cs_opset_path_t, cff2_path_param_t>::cs_interpreter_t(CFF::cff2_cs_interp_env_t<CFF::number_t>&)
Line
Count
Source
878
279k
  cs_interpreter_t (ENV& env_) : interpreter_t<ENV> (env_) {}
879
880
  bool interpret (PARAM& param)
881
414k
  {
882
414k
    SUPER::env.set_endchar (false);
883
884
414k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
45.3M
    for (;;) {
886
45.3M
      if (unlikely (!--max_ops))
887
66
      {
888
66
  SUPER::env.set_error ();
889
66
  break;
890
66
      }
891
45.3M
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
892
45.3M
      if (unlikely (SUPER::env.in_error ()))
893
178k
  return false;
894
45.1M
      if (SUPER::env.is_endchar ())
895
236k
  break;
896
45.1M
    }
897
898
236k
    return true;
899
414k
  }
CFF::cs_interpreter_t<CFF::cff1_cs_interp_env_t, cff1_cs_opset_extents_t, cff1_extents_param_t>::interpret(cff1_extents_param_t&)
Line
Count
Source
881
76.9k
  {
882
76.9k
    SUPER::env.set_endchar (false);
883
884
76.9k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
7.06M
    for (;;) {
886
7.06M
      if (unlikely (!--max_ops))
887
31
      {
888
31
  SUPER::env.set_error ();
889
31
  break;
890
31
      }
891
7.06M
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
892
7.06M
      if (unlikely (SUPER::env.in_error ()))
893
20.9k
  return false;
894
7.04M
      if (SUPER::env.is_endchar ())
895
55.9k
  break;
896
7.04M
    }
897
898
55.9k
    return true;
899
76.9k
  }
CFF::cs_interpreter_t<CFF::cff1_cs_interp_env_t, cff1_cs_opset_path_t, cff1_path_param_t>::interpret(cff1_path_param_t&)
Line
Count
Source
881
25.8k
  {
882
25.8k
    SUPER::env.set_endchar (false);
883
884
25.8k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
3.40M
    for (;;) {
886
3.40M
      if (unlikely (!--max_ops))
887
13
      {
888
13
  SUPER::env.set_error ();
889
13
  break;
890
13
      }
891
3.40M
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
892
3.40M
      if (unlikely (SUPER::env.in_error ()))
893
7.72k
  return false;
894
3.40M
      if (SUPER::env.is_endchar ())
895
18.1k
  break;
896
3.40M
    }
897
898
18.1k
    return true;
899
25.8k
  }
Unexecuted instantiation: CFF::cs_interpreter_t<CFF::cff1_cs_interp_env_t, cff1_cs_opset_seac_t, get_seac_param_t>::interpret(get_seac_param_t&)
CFF::cs_interpreter_t<CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_cs_opset_extents_t, cff2_extents_param_t>::interpret(cff2_extents_param_t&)
Line
Count
Source
881
32.5k
  {
882
32.5k
    SUPER::env.set_endchar (false);
883
884
32.5k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
13.4M
    for (;;) {
886
13.4M
      if (unlikely (!--max_ops))
887
11
      {
888
11
  SUPER::env.set_error ();
889
11
  break;
890
11
      }
891
13.4M
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
892
13.4M
      if (unlikely (SUPER::env.in_error ()))
893
13.7k
  return false;
894
13.4M
      if (SUPER::env.is_endchar ())
895
18.7k
  break;
896
13.4M
    }
897
898
18.7k
    return true;
899
32.5k
  }
CFF::cs_interpreter_t<CFF::cff2_cs_interp_env_t<CFF::number_t>, cff2_cs_opset_path_t, cff2_path_param_t>::interpret(cff2_path_param_t&)
Line
Count
Source
881
279k
  {
882
279k
    SUPER::env.set_endchar (false);
883
884
279k
    unsigned max_ops = HB_CFF_MAX_OPS;
885
21.4M
    for (;;) {
886
21.4M
      if (unlikely (!--max_ops))
887
11
      {
888
11
  SUPER::env.set_error ();
889
11
  break;
890
11
      }
891
21.4M
      OPSET::process_op (SUPER::env.fetch_op (), SUPER::env, param);
892
21.4M
      if (unlikely (SUPER::env.in_error ()))
893
135k
  return false;
894
21.2M
      if (SUPER::env.is_endchar ())
895
143k
  break;
896
21.2M
    }
897
898
143k
    return true;
899
279k
  }
900
901
  private:
902
  typedef interpreter_t<ENV> SUPER;
903
};
904
905
} /* namespace CFF */
906
907
#endif /* HB_CFF_INTERP_CS_COMMON_HH */