ft2-ruby 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +17 -0
- data/CHANGELOG.md +60 -0
- data/Gemfile +3 -0
- data/LICENSE +22 -0
- data/README.md +15 -0
- data/{TODO → TODO.md} +3 -0
- data/{extconf.rb → ext/ft2-ruby/extconf.rb} +0 -1
- data/{ft2.c → ext/ft2-ruby/ft2.c} +157 -160
- data/ft2-ruby.gemspec +18 -0
- data/lib/ft2-ruby/version.rb +3 -0
- metadata +39 -60
- data/ChangeLog +0 -32
- data/MANIFEST +0 -14
- data/README +0 -19
- data/Rakefile +0 -32
- data/VERSION +0 -1
data/.gitignore
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
# ft2-ruby changelog #
|
2
|
+
|
3
|
+
## 0.1.4 ##
|
4
|
+
### Fri Apr 27 11:39:28 2012 by [sethvargo](http://www.github.com/sethvargo) ###
|
5
|
+
- Added MIT license
|
6
|
+
|
7
|
+
### Fri Apr 27 11:39:28 2012 by [wingrunr21](http://www.github.com/wingrunr21) ###
|
8
|
+
- Restructured gem to match modern standards
|
9
|
+
- Changed instances of RSTRING(foo)->ptr to RSTRING_PTR(foo)
|
10
|
+
- Gem is now managed with Bundler.
|
11
|
+
- Removed unnecessary files (MANIFEST, VERSION)
|
12
|
+
- Converted information files to Markdown
|
13
|
+
|
14
|
+
## 0.1.3 ##
|
15
|
+
### Tue Oct 19 14:07:07 2010 by [dvanderson](http://www.github.com/dvanderson) ###
|
16
|
+
- fix a cast that was breaking compilation on OS X
|
17
|
+
|
18
|
+
## 0.1.2 ##
|
19
|
+
### Wed Oct 19 15:23:38 2010 by [dvanderson](http://www.github.com/dvanderson) ###
|
20
|
+
- fix to get cbox for glyphs
|
21
|
+
|
22
|
+
### Wed Feb 10 19:45:20 2010 by [andrewwillis](http://www.github.com/andrewwillis) ###
|
23
|
+
- move gem to jeweler
|
24
|
+
- Update native extension to work correctly with ft2
|
25
|
+
- fix compiler errors
|
26
|
+
|
27
|
+
## 0.1.1 and before ##
|
28
|
+
### Thu Nov 21 15:18:26 2002 by [pabs](pabs@pablotron.org) and [andrewwillis](http://www.github.com/andrewwillis) ###
|
29
|
+
- ft2.c: finished documenting and implementing FT2::Glyph,
|
30
|
+
FT2::BitmapGlyph, and FT2::OutlineGlyph.
|
31
|
+
- ft2.c: compiles clean with -W -Wall -pedantic again
|
32
|
+
- TODO: updated
|
33
|
+
|
34
|
+
### Wed Nov 20 16:11:10 2002 by [pabs](pabs@pablotron.org) ###
|
35
|
+
- ft2.c: finished documenting the FT2::SizeMetrics methods (had to
|
36
|
+
pull the documentation for them out of the second part of the
|
37
|
+
FreeType2 tutorial, since they're not available in the API
|
38
|
+
reference).
|
39
|
+
|
40
|
+
### Sat Nov 16 01:45:42 2002 by [pabs](pabs@pablotron.org) ###
|
41
|
+
- ft2.c: finished documentation for FT2::GlyphSlot methods.
|
42
|
+
|
43
|
+
### Fri Nov 15 15:15:37 2002 by [pabs](pabs@pablotron.org) ###
|
44
|
+
- ft2.c: finished documentation for FT2::GlyphMetrics methods.
|
45
|
+
|
46
|
+
### Fri Nov 15 03:52:46 2002 by [pabs](pabs@pablotron.org) ###
|
47
|
+
- ft2.c: added FT2::Face#current_charmap
|
48
|
+
|
49
|
+
### Fri Nov 15 03:27:50 2002 by [pabs](pabs@pablotron.org) ###
|
50
|
+
- ft2.c: finished documentation for FT2::Face methods.
|
51
|
+
|
52
|
+
### Tue Nov 12 17:20:23 2002 by [pabs](pabs@pablotron.org) ###
|
53
|
+
- made some changes according to the notes in the freetype2 headers:
|
54
|
+
- ft2.c: removed FT2::PixelMode::RGB and FT2::PixelMode::RGBA constants
|
55
|
+
- ft2.c: removed Ft2::PaletteMode
|
56
|
+
- compiles clean with -W -Wall -pedantic again
|
57
|
+
|
58
|
+
### Thu Aug 15 09:39:24 2002 by [pabs](pabs@pablotron.org) ###
|
59
|
+
- created changelog.
|
60
|
+
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Paul Duncan
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# FT2-Ruby #
|
2
|
+
|
3
|
+
This gem provides [FreeType2](http://www.freetype.org/) bindings for Ruby.
|
4
|
+
|
5
|
+
## Installation ##
|
6
|
+
|
7
|
+
gem install ft2-ruby
|
8
|
+
|
9
|
+
## About the Author ##
|
10
|
+
Paul Duncan <pabs@pablotron.org>
|
11
|
+
http://www.pablotron.org/
|
12
|
+
|
13
|
+
Maintained by [CustomInk](http://technology.customink.com/)
|
14
|
+
|
15
|
+
|
data/{TODO → TODO.md}
RENAMED
@@ -29,7 +29,6 @@
|
|
29
29
|
#include FT_FREETYPE_H
|
30
30
|
#include FT_GLYPH_H
|
31
31
|
|
32
|
-
#define VERSION "0.1.0"
|
33
32
|
#define UNUSED(a) ((void) (a))
|
34
33
|
#define ABS(a) (((a) < 0) ? -(a) : (a))
|
35
34
|
|
@@ -153,7 +152,7 @@ static VALUE ft_bitmap_width(VALUE self) {
|
|
153
152
|
*
|
154
153
|
* Return the pitch (bytes per row, including alignment padding) of an
|
155
154
|
* FT2::Bitmap object.
|
156
|
-
*
|
155
|
+
*
|
157
156
|
* Examples:
|
158
157
|
* width = bitmap.width
|
159
158
|
*
|
@@ -348,7 +347,7 @@ VALUE ft_face_new(int argc, VALUE *argv, VALUE klass) {
|
|
348
347
|
}
|
349
348
|
|
350
349
|
face = malloc(sizeof(FT_Face));
|
351
|
-
err = FT_New_Face(*lib,
|
350
|
+
err = FT_New_Face(*lib, RSTRING_PTR(path), face_index, face);
|
352
351
|
if (err != FT_Err_Ok)
|
353
352
|
handle_error(err);
|
354
353
|
|
@@ -391,18 +390,18 @@ VALUE ft_face_new_from_memory(int argc, VALUE *argv, VALUE klass) {
|
|
391
390
|
lib = &library;
|
392
391
|
switch (argc) {
|
393
392
|
case 2:
|
394
|
-
mem =
|
393
|
+
mem = RSTRING_PTR(argv[0]);
|
395
394
|
len = NUM2INT(argv[1]);
|
396
395
|
face_index = 0;
|
397
396
|
break;
|
398
397
|
case 3:
|
399
398
|
if (rb_obj_is_kind_of(argv[0], rb_cString)) {
|
400
|
-
mem =
|
399
|
+
mem = RSTRING_PTR(argv[0]);
|
401
400
|
len = NUM2INT(argv[1]);
|
402
401
|
face_index = NUM2INT(argv[2]);
|
403
402
|
} else if (rb_obj_is_kind_of(argv[0], cLibrary)) {
|
404
403
|
Data_Get_Struct(argv[0], FT_Library, lib);
|
405
|
-
mem =
|
404
|
+
mem = RSTRING_PTR(argv[1]);
|
406
405
|
len = NUM2INT(argv[2]);
|
407
406
|
face_index = 0;
|
408
407
|
} else {
|
@@ -411,7 +410,7 @@ VALUE ft_face_new_from_memory(int argc, VALUE *argv, VALUE klass) {
|
|
411
410
|
break;
|
412
411
|
case 4:
|
413
412
|
Data_Get_Struct(argv[0], FT_Library, lib);
|
414
|
-
mem =
|
413
|
+
mem = RSTRING_PTR(argv[1]);
|
415
414
|
len = NUM2INT(argv[2]);
|
416
415
|
face_index = NUM2INT(argv[3]);
|
417
416
|
break;
|
@@ -511,7 +510,7 @@ static VALUE ft_face_index(VALUE self) {
|
|
511
510
|
* FT2::Face#kerning?
|
512
511
|
* FT2::Face#external_stream?
|
513
512
|
* FT2::Face#fast_glyphs?
|
514
|
-
*
|
513
|
+
*
|
515
514
|
* Aliases:
|
516
515
|
* FT2::Face#face_flags
|
517
516
|
*
|
@@ -540,7 +539,7 @@ static VALUE ft_face_flag_scalable(VALUE self) {
|
|
540
539
|
return ((*face)->face_flags & FT_FACE_FLAG_SCALABLE) ? Qtrue : Qfalse;
|
541
540
|
}
|
542
541
|
|
543
|
-
/*
|
542
|
+
/*
|
544
543
|
* Does this FT2::Face contain bitmap strikes for some pixel sizes?
|
545
544
|
*
|
546
545
|
* Examples:
|
@@ -567,7 +566,7 @@ static VALUE ft_face_flag_fixed_width(VALUE self) {
|
|
567
566
|
}
|
568
567
|
|
569
568
|
/*
|
570
|
-
* Does this FT2::Face contain horizontal glyph metrics?
|
569
|
+
* Does this FT2::Face contain horizontal glyph metrics?
|
571
570
|
*
|
572
571
|
* Note:
|
573
572
|
* This flag is true for virtually all fonts.
|
@@ -583,7 +582,7 @@ static VALUE ft_face_flag_horizontal(VALUE self) {
|
|
583
582
|
}
|
584
583
|
|
585
584
|
/*
|
586
|
-
* Does this FT2::Face contain vertical glyph metrics?
|
585
|
+
* Does this FT2::Face contain vertical glyph metrics?
|
587
586
|
*
|
588
587
|
* Note:
|
589
588
|
* If this flag is not set, the glyph loader will synthesize vertical
|
@@ -600,7 +599,7 @@ static VALUE ft_face_flag_vertical(VALUE self) {
|
|
600
599
|
}
|
601
600
|
|
602
601
|
/*
|
603
|
-
* Is this FT2::Face stored in the 'sfnt' storage format?
|
602
|
+
* Is this FT2::Face stored in the 'sfnt' storage format?
|
604
603
|
*
|
605
604
|
* Note:
|
606
605
|
* This currently means the file was either TrueType or OpenType.
|
@@ -616,7 +615,7 @@ static VALUE ft_face_flag_sfnt(VALUE self) {
|
|
616
615
|
}
|
617
616
|
|
618
617
|
/*
|
619
|
-
* Does this FT2::Face contain kerning information?
|
618
|
+
* Does this FT2::Face contain kerning information?
|
620
619
|
*
|
621
620
|
* Examples:
|
622
621
|
* puts "face contains kerning information" if face.kerning?
|
@@ -642,11 +641,11 @@ static VALUE ft_face_flag_external_stream(VALUE self) {
|
|
642
641
|
}
|
643
642
|
|
644
643
|
/*
|
645
|
-
* Does this FT2::Face contain fast glyphs?
|
644
|
+
* Does this FT2::Face contain fast glyphs?
|
646
645
|
*
|
647
646
|
* Note:
|
648
647
|
* This flag is usually set for fixed-size formats like FNT.
|
649
|
-
*
|
648
|
+
*
|
650
649
|
* Examples:
|
651
650
|
* puts "face contains fast glyphs" if face.fast_glyphs?
|
652
651
|
*
|
@@ -687,7 +686,7 @@ static VALUE ft_face_style_flags(VALUE self) {
|
|
687
686
|
}
|
688
687
|
|
689
688
|
/*
|
690
|
-
* Is this a bold FT2::Face?
|
689
|
+
* Is this a bold FT2::Face?
|
691
690
|
*
|
692
691
|
* Examples:
|
693
692
|
* puts "bold face" if face.bold?
|
@@ -700,7 +699,7 @@ static VALUE ft_face_flag_bold(VALUE self) {
|
|
700
699
|
}
|
701
700
|
|
702
701
|
/*
|
703
|
-
* Is this an italic FT2::Face?
|
702
|
+
* Is this an italic FT2::Face?
|
704
703
|
*
|
705
704
|
* Examples:
|
706
705
|
* puts "italic face" if face.italic?
|
@@ -713,7 +712,7 @@ static VALUE ft_face_flag_italic(VALUE self) {
|
|
713
712
|
}
|
714
713
|
|
715
714
|
/*
|
716
|
-
* Return the number of glyphs in an FT2::Face object.
|
715
|
+
* Return the number of glyphs in an FT2::Face object.
|
717
716
|
*
|
718
717
|
* Aliases:
|
719
718
|
* FT2::Face#num_glyphs
|
@@ -730,15 +729,15 @@ static VALUE ft_face_glyphs(VALUE self) {
|
|
730
729
|
}
|
731
730
|
|
732
731
|
/*
|
733
|
-
* Return the family name of an FT2::Face object.
|
732
|
+
* Return the family name of an FT2::Face object.
|
734
733
|
*
|
735
|
-
* Description:
|
734
|
+
* Description:
|
736
735
|
* This is an ASCII string, usually in English, which describes the
|
737
736
|
* FT2::Face object's family (eg "Times New Roman" or "Geneva"). Some
|
738
737
|
* formats (eg Truetype and OpenType) provide localized and Unicode
|
739
738
|
* versions of this string, which are accessable via the format specific
|
740
739
|
* interfaces.
|
741
|
-
*
|
740
|
+
*
|
742
741
|
* Examples:
|
743
742
|
* puts 'family: ' << face.family
|
744
743
|
*
|
@@ -750,13 +749,13 @@ static VALUE ft_face_family(VALUE self) {
|
|
750
749
|
}
|
751
750
|
|
752
751
|
/*
|
753
|
-
* Return the style name of an FT2::Face object.
|
752
|
+
* Return the style name of an FT2::Face object.
|
754
753
|
*
|
755
754
|
* Description:
|
756
755
|
* This is an ASCII string, usually in English, which describes the
|
757
756
|
* FT2::Face object's style (eg "Bold", "Italic", "Condensed", etc).
|
758
757
|
* This field is optional and may be set to nil.
|
759
|
-
*
|
758
|
+
*
|
760
759
|
* Examples:
|
761
760
|
* puts 'style: ' << face.style if face.style
|
762
761
|
*
|
@@ -770,12 +769,12 @@ static VALUE ft_face_style(VALUE self) {
|
|
770
769
|
}
|
771
770
|
|
772
771
|
/*
|
773
|
-
* Return the number of fixed sizes in an FT2::Face object.
|
772
|
+
* Return the number of fixed sizes in an FT2::Face object.
|
774
773
|
*
|
775
774
|
* Note:
|
776
775
|
* This should be set to 0 for scalable fonts, unless the FT2::Face
|
777
776
|
* object contains a complete set of glyphs for the specified size.
|
778
|
-
*
|
777
|
+
*
|
779
778
|
* Aliases:
|
780
779
|
* FT2::Face#num_fixed_sizes
|
781
780
|
*
|
@@ -790,11 +789,11 @@ static VALUE ft_face_fixed_sizes(VALUE self) {
|
|
790
789
|
}
|
791
790
|
|
792
791
|
/*
|
793
|
-
* Return an array of sizes in an FT2::Face object.
|
792
|
+
* Return an array of sizes in an FT2::Face object.
|
794
793
|
*
|
795
794
|
* Note:
|
796
795
|
* This method does not currently work..
|
797
|
-
*
|
796
|
+
*
|
798
797
|
* Examples:
|
799
798
|
* face.available_sizesdflksjaflksdjf FIXME
|
800
799
|
*
|
@@ -821,7 +820,7 @@ static VALUE ft_face_num_charmaps(VALUE self) {
|
|
821
820
|
|
822
821
|
/*
|
823
822
|
* Return an array of charmaps in an FT2::Face object.
|
824
|
-
*
|
823
|
+
*
|
825
824
|
* Note:
|
826
825
|
* This method may not work correctly at the moment (FIXME).
|
827
826
|
*
|
@@ -840,13 +839,13 @@ static VALUE ft_face_charmaps(VALUE self) {
|
|
840
839
|
ary = rb_ary_new();
|
841
840
|
for (i = 0; i < (*face)->num_charmaps; i++)
|
842
841
|
rb_ary_push(ary, INT2FIX(i));
|
843
|
-
|
842
|
+
|
844
843
|
return ary;
|
845
844
|
}
|
846
845
|
|
847
846
|
/*
|
848
847
|
* Return the bounding box of an FT2::Face object.
|
849
|
-
*
|
848
|
+
*
|
850
849
|
* Note:
|
851
850
|
* This method is not currently implemented (FIXME).
|
852
851
|
*
|
@@ -863,7 +862,7 @@ static VALUE ft_face_bbox(VALUE self) {
|
|
863
862
|
|
864
863
|
/*
|
865
864
|
* Return the number of font units per EM for this FT2::Face object.
|
866
|
-
*
|
865
|
+
*
|
867
866
|
* Description:
|
868
867
|
* This value is typically 2048 for TrueType fonts, 1000 for Type1
|
869
868
|
* fonts, and should be set to the (unrealistic) value 1 for
|
@@ -884,7 +883,7 @@ static VALUE ft_face_units_per_em(VALUE self) {
|
|
884
883
|
|
885
884
|
/*
|
886
885
|
* Return the ascender for this FT2::Face object.
|
887
|
-
*
|
886
|
+
*
|
888
887
|
* Description:
|
889
888
|
* An FT2::Face object's ascender is the vertical distance, in font
|
890
889
|
* units, from the baseline to the topmost point of any glyph in the
|
@@ -902,7 +901,7 @@ static VALUE ft_face_ascender(VALUE self) {
|
|
902
901
|
|
903
902
|
/*
|
904
903
|
* Return the descender for this FT2::Face object.
|
905
|
-
*
|
904
|
+
*
|
906
905
|
* Description:
|
907
906
|
* An FT2::Face object's descender is the vertical distance, in font
|
908
907
|
* units, from the baseline to the bottommost point of any glyph in
|
@@ -920,7 +919,7 @@ static VALUE ft_face_descender(VALUE self) {
|
|
920
919
|
|
921
920
|
/*
|
922
921
|
* Return the height of this FT2::Face object.
|
923
|
-
*
|
922
|
+
*
|
924
923
|
* Description:
|
925
924
|
* An FT2::Face object's height is the vertical distance, in font
|
926
925
|
* units, from the baseline of one line to the baseline of the next.
|
@@ -939,7 +938,7 @@ static VALUE ft_face_height(VALUE self) {
|
|
939
938
|
|
940
939
|
/*
|
941
940
|
* Return the maximal advance width of this FT2::Face object.
|
942
|
-
*
|
941
|
+
*
|
943
942
|
* Description:
|
944
943
|
* The maximal advance width, in font units, for all glyphs in this
|
945
944
|
* FT2::Face object. This can be used to make word-wrapping
|
@@ -957,7 +956,7 @@ static VALUE ft_face_max_advance_width(VALUE self) {
|
|
957
956
|
|
958
957
|
/*
|
959
958
|
* Return the maximal advance height of this FT2::Face object.
|
960
|
-
*
|
959
|
+
*
|
961
960
|
* Description:
|
962
961
|
* The maximal advance height, in font units, for all glyphs in this
|
963
962
|
* FT2::Face object. This can be used to make word-wrapping
|
@@ -975,7 +974,7 @@ static VALUE ft_face_max_advance_height(VALUE self) {
|
|
975
974
|
|
976
975
|
/*
|
977
976
|
* Return the underline position of this FT2::Face object.
|
978
|
-
*
|
977
|
+
*
|
979
978
|
* Description:
|
980
979
|
* The position, in font units, of the underline line for this face.
|
981
980
|
* It's the center of the underlining stem. Only relevant for scalable
|
@@ -993,7 +992,7 @@ static VALUE ft_face_underline_position(VALUE self) {
|
|
993
992
|
|
994
993
|
/*
|
995
994
|
* Return the underline thickness of this FT2::Face object.
|
996
|
-
*
|
995
|
+
*
|
997
996
|
* Description:
|
998
997
|
* The thickness, in font units, of the underline for this face. Only
|
999
998
|
* relevant for scalable formats.
|
@@ -1009,7 +1008,7 @@ static VALUE ft_face_underline_thickness(VALUE self) {
|
|
1009
1008
|
}
|
1010
1009
|
/*
|
1011
1010
|
* Return the glyph slot associated with this FT2::Face object.
|
1012
|
-
*
|
1011
|
+
*
|
1013
1012
|
* Description:
|
1014
1013
|
* The face's associated glyph slot(s) (a FT2::GlyphSlot). This object
|
1015
1014
|
* is created automatically with a new FT2::Face object. However,
|
@@ -1024,7 +1023,7 @@ static VALUE ft_face_glyph(VALUE self) {
|
|
1024
1023
|
FT_Face *face;
|
1025
1024
|
Data_Get_Struct(self, FT_Face, face);
|
1026
1025
|
|
1027
|
-
if ((*face)->glyph)
|
1026
|
+
if ((*face)->glyph)
|
1028
1027
|
return Data_Wrap_Struct(cGlyphSlot, 0, dont_free, &((*face)->glyph));
|
1029
1028
|
else
|
1030
1029
|
return Qnil;
|
@@ -1032,7 +1031,7 @@ static VALUE ft_face_glyph(VALUE self) {
|
|
1032
1031
|
|
1033
1032
|
/*
|
1034
1033
|
* Return the current active size of this FT2::Face object.
|
1035
|
-
*
|
1034
|
+
*
|
1036
1035
|
* Examples:
|
1037
1036
|
* size = face.size
|
1038
1037
|
*
|
@@ -1041,7 +1040,7 @@ static VALUE ft_face_size(VALUE self) {
|
|
1041
1040
|
FT_Face *face;
|
1042
1041
|
Data_Get_Struct(self, FT_Face, face);
|
1043
1042
|
|
1044
|
-
if ((*face)->size)
|
1043
|
+
if ((*face)->size)
|
1045
1044
|
return Data_Wrap_Struct(cSize, 0, dont_free, (*face)->size);
|
1046
1045
|
else
|
1047
1046
|
return Qnil;
|
@@ -1049,7 +1048,7 @@ static VALUE ft_face_size(VALUE self) {
|
|
1049
1048
|
|
1050
1049
|
/*
|
1051
1050
|
* Return the current active FT2::CharMap of this FT2::Face object.
|
1052
|
-
*
|
1051
|
+
*
|
1053
1052
|
* Examples:
|
1054
1053
|
* size = face.size
|
1055
1054
|
*
|
@@ -1058,13 +1057,13 @@ static VALUE ft_face_charmap(VALUE self) {
|
|
1058
1057
|
FT_Face *face;
|
1059
1058
|
Data_Get_Struct(self, FT_Face, face);
|
1060
1059
|
|
1061
|
-
if ((*face)->charmap)
|
1060
|
+
if ((*face)->charmap)
|
1062
1061
|
return Data_Wrap_Struct(cCharMap, 0, dont_free, (*face)->charmap);
|
1063
1062
|
else
|
1064
1063
|
return Qnil;
|
1065
1064
|
}
|
1066
1065
|
|
1067
|
-
/*
|
1066
|
+
/*
|
1068
1067
|
* Attach a font file to this FT2::Face object.
|
1069
1068
|
*
|
1070
1069
|
* Description:
|
@@ -1088,12 +1087,12 @@ static VALUE ft_face_attach(VALUE self, VALUE path) {
|
|
1088
1087
|
FT_Face *face;
|
1089
1088
|
FT_Error err;
|
1090
1089
|
Data_Get_Struct(self, FT_Face, face);
|
1091
|
-
if ((err = FT_Attach_File(*face,
|
1090
|
+
if ((err = FT_Attach_File(*face, RSTRING_PTR(path))) != FT_Err_Ok)
|
1092
1091
|
handle_error(err);
|
1093
1092
|
return self;
|
1094
1093
|
}
|
1095
1094
|
|
1096
|
-
/*
|
1095
|
+
/*
|
1097
1096
|
* Set the character dimensions of this FT2::Face object.
|
1098
1097
|
*
|
1099
1098
|
* Description:
|
@@ -1122,7 +1121,7 @@ static VALUE ft_face_set_char_size(VALUE self, VALUE c_w, VALUE c_h, VALUE h_r,
|
|
1122
1121
|
return self;
|
1123
1122
|
}
|
1124
1123
|
|
1125
|
-
/*
|
1124
|
+
/*
|
1126
1125
|
* Set the character dimensions of this FT2::Face object.
|
1127
1126
|
*
|
1128
1127
|
* Description:
|
@@ -1131,7 +1130,7 @@ static VALUE ft_face_set_char_size(VALUE self, VALUE c_w, VALUE c_h, VALUE h_r,
|
|
1131
1130
|
*
|
1132
1131
|
* If one of the character dimensions is zero, its value is set equal
|
1133
1132
|
* to the other.
|
1134
|
-
*
|
1133
|
+
*
|
1135
1134
|
* The values of `pixel_width' and `pixel_height' correspond to the
|
1136
1135
|
* pixel values of the typographic character size, which are NOT
|
1137
1136
|
* necessarily the same as the dimensions of the glyph `bitmap cells'.
|
@@ -1143,7 +1142,7 @@ static VALUE ft_face_set_char_size(VALUE self, VALUE c_w, VALUE c_h, VALUE h_r,
|
|
1143
1142
|
* This means that setting the pixel size to, say, 8x8 doesn't
|
1144
1143
|
* guarantee in any way that you will get glyph bitmaps that all fit
|
1145
1144
|
* within an 8x8 cell (sometimes even far from it).
|
1146
|
-
*
|
1145
|
+
*
|
1147
1146
|
* Examples:
|
1148
1147
|
* face.set_pixel_sizes pixel_width, pixel_height
|
1149
1148
|
*
|
@@ -1158,18 +1157,18 @@ static VALUE ft_face_set_pixel_sizes(VALUE self, VALUE pixel_w, VALUE pixel_h) {
|
|
1158
1157
|
return self;
|
1159
1158
|
}
|
1160
1159
|
|
1161
|
-
/*
|
1160
|
+
/*
|
1162
1161
|
* Set the pre-render transoformation matrix and vector of a FT2::Face object.
|
1163
1162
|
*
|
1164
1163
|
* Description:
|
1165
1164
|
* Used to set the transformation that is applied to glyph images just
|
1166
1165
|
* before they are converted to bitmaps in a FT2::GlyphSlot when
|
1167
1166
|
* FT2::GlyphSlot#render is called.
|
1168
|
-
*
|
1167
|
+
*
|
1169
1168
|
* matrix: The transformation's 2x2 matrix. Use nil for the identity
|
1170
1169
|
* matrix.
|
1171
1170
|
* delta: The translation vector. Use nil for the null vector.
|
1172
|
-
*
|
1171
|
+
*
|
1173
1172
|
* Note:
|
1174
1173
|
* The transformation is only applied to scalable image formats after
|
1175
1174
|
* the glyph has been loaded. It means that hinting is unaltered by
|
@@ -1219,7 +1218,7 @@ static VALUE ft_face_set_transform(VALUE self, VALUE matrix, VALUE delta) {
|
|
1219
1218
|
|
1220
1219
|
/*
|
1221
1220
|
* Load a glyph at a given size into a glyph slot of a FT2::Face object.
|
1222
|
-
*
|
1221
|
+
*
|
1223
1222
|
* Description:
|
1224
1223
|
* Load a glyph at a given size into a glyph slot of a FT2::Face
|
1225
1224
|
* object.
|
@@ -1255,7 +1254,7 @@ static VALUE ft_face_set_transform(VALUE self, VALUE matrix, VALUE delta) {
|
|
1255
1254
|
* FT2::Load::FORCE_AUTOHINT
|
1256
1255
|
* FT2::Load::NO_RECURSE
|
1257
1256
|
* FT2::Load::PEDANTIC
|
1258
|
-
*
|
1257
|
+
*
|
1259
1258
|
* Examples:
|
1260
1259
|
* face.load_glyph 5, FT2::Load::DEFAULT
|
1261
1260
|
*
|
@@ -1267,7 +1266,7 @@ static VALUE ft_face_load_glyph(VALUE self, VALUE glyph_index, VALUE flags) {
|
|
1267
1266
|
Data_Get_Struct(self, FT_Face, face);
|
1268
1267
|
if (flags == Qnil)
|
1269
1268
|
flags = INT2FIX(FT_LOAD_DEFAULT);
|
1270
|
-
|
1269
|
+
|
1271
1270
|
err = FT_Load_Glyph(*face, NUM2INT(glyph_index), NUM2INT(flags));
|
1272
1271
|
if (err != FT_Err_Ok)
|
1273
1272
|
handle_error(err);
|
@@ -1277,11 +1276,11 @@ static VALUE ft_face_load_glyph(VALUE self, VALUE glyph_index, VALUE flags) {
|
|
1277
1276
|
|
1278
1277
|
/*
|
1279
1278
|
* Load a glyph at a given size into a glyph slot of a FT2::Face object.
|
1280
|
-
*
|
1279
|
+
*
|
1281
1280
|
* Description:
|
1282
1281
|
* Load a glyph at a given size into a glyph slot of a FT2::Face
|
1283
1282
|
* object according to its character code.
|
1284
|
-
*
|
1283
|
+
*
|
1285
1284
|
* char_code: The glyph's character code, according to the current
|
1286
1285
|
* charmap used in the FT2::Face object.
|
1287
1286
|
* load_flags: A flag indicating what to load for this glyph. The
|
@@ -1289,7 +1288,7 @@ static VALUE ft_face_load_glyph(VALUE self, VALUE glyph_index, VALUE flags) {
|
|
1289
1288
|
* glyph loading process (e.g., whether the outline should
|
1290
1289
|
* be scaled, whether to load bitmaps or not, whether to
|
1291
1290
|
* hint the outline, etc).
|
1292
|
-
*
|
1291
|
+
*
|
1293
1292
|
* Note:
|
1294
1293
|
* If the face has no current charmap, or if the character code is not
|
1295
1294
|
* defined in the charmap, this function will return an error.
|
@@ -1317,7 +1316,7 @@ static VALUE ft_face_load_glyph(VALUE self, VALUE glyph_index, VALUE flags) {
|
|
1317
1316
|
* FT2::Load::FORCE_AUTOHINT
|
1318
1317
|
* FT2::Load::NO_RECURSE
|
1319
1318
|
* FT2::Load::PEDANTIC
|
1320
|
-
*
|
1319
|
+
*
|
1321
1320
|
* Examples:
|
1322
1321
|
* face.load_char 5, FT2::Load::DEFAULT
|
1323
1322
|
*
|
@@ -1342,9 +1341,9 @@ static VALUE ft_face_load_char(VALUE self, VALUE char_code, VALUE flags) {
|
|
1342
1341
|
* the same as used in the font in case the font is based on glyph
|
1343
1342
|
* indices. Reason for this behaviour is to assure that index 0 is
|
1344
1343
|
* never used, representing the missing glyph.
|
1345
|
-
*
|
1344
|
+
*
|
1346
1345
|
* A return value of 0 means `undefined character code'.
|
1347
|
-
*
|
1346
|
+
*
|
1348
1347
|
* Examples:
|
1349
1348
|
* index = face.char_index 65
|
1350
1349
|
* puts 'undefined character code' if index == 0
|
@@ -1356,22 +1355,22 @@ static VALUE ft_face_char_index(VALUE self, VALUE char_code) {
|
|
1356
1355
|
return INT2FIX(FT_Get_Char_Index(*face, NUM2INT(char_code)));
|
1357
1356
|
}
|
1358
1357
|
|
1359
|
-
/*
|
1358
|
+
/*
|
1360
1359
|
* Get the glyph index of a given glyph name.
|
1361
1360
|
*
|
1362
|
-
* Note:
|
1361
|
+
* Note:
|
1363
1362
|
* This method uses driver specific objects to do the translation.
|
1364
1363
|
*
|
1365
1364
|
* A return value of 0 means `undefined character code'.
|
1366
1365
|
*
|
1367
1366
|
* Examples:
|
1368
1367
|
* index = face.name_index glyph_name
|
1369
|
-
*
|
1368
|
+
*
|
1370
1369
|
*/
|
1371
1370
|
static VALUE ft_face_name_index(VALUE self, VALUE glyph_name) {
|
1372
1371
|
FT_Face *face;
|
1373
1372
|
Data_Get_Struct(self, FT_Face, face);
|
1374
|
-
return INT2FIX(FT_Get_Name_Index(*face,
|
1373
|
+
return INT2FIX(FT_Get_Name_Index(*face, RSTRING_PTR(glyph_name)));
|
1375
1374
|
}
|
1376
1375
|
|
1377
1376
|
/*
|
@@ -1379,14 +1378,14 @@ static VALUE ft_face_name_index(VALUE self, VALUE glyph_name) {
|
|
1379
1378
|
*
|
1380
1379
|
* Description:
|
1381
1380
|
* Get the kerning vector between two glyphs of a FT2::Face object.
|
1382
|
-
*
|
1381
|
+
*
|
1383
1382
|
* left_glyph: The index of the left glyph in the kern pair.
|
1384
1383
|
* right_glyph: The index of the right glyph in the kern pair.
|
1385
1384
|
* kern_mode: One of the FT2::KerningMode::XXXX constants. Determines
|
1386
1385
|
* the scale/dimension of the returned kerning vector.
|
1387
|
-
*
|
1386
|
+
*
|
1388
1387
|
* Passing kern_mode == nil is the same as FT2::KerningMode::DEFAULT.
|
1389
|
-
*
|
1388
|
+
*
|
1390
1389
|
* Returns a kerning vector (actually a two-element array). This is in
|
1391
1390
|
* font units for scalable formats, and in pixels for fixed-sizes
|
1392
1391
|
* formats.
|
@@ -1416,21 +1415,21 @@ static VALUE ft_face_kerning(VALUE self, VALUE left_glyph, VALUE right_glyph, VA
|
|
1416
1415
|
|
1417
1416
|
if (kern_mode == Qnil)
|
1418
1417
|
kern_mode = NUM2INT(ft_kerning_default);
|
1419
|
-
|
1418
|
+
|
1420
1419
|
err = FT_Get_Kerning(*face, NUM2INT(left_glyph), NUM2INT(right_glyph), NUM2INT(kern_mode), &v);
|
1421
1420
|
if (err != FT_Err_Ok)
|
1422
1421
|
handle_error(err);
|
1423
1422
|
|
1424
1423
|
rb_ary_push(ary, INT2FIX(v.x));
|
1425
1424
|
rb_ary_push(ary, INT2FIX(v.y));
|
1426
|
-
|
1425
|
+
|
1427
1426
|
return ary;
|
1428
1427
|
}
|
1429
1428
|
|
1430
1429
|
/*
|
1431
1430
|
* Get the ASCII name of a glyph in a FT2::Face object.
|
1432
1431
|
*
|
1433
|
-
* Note:
|
1432
|
+
* Note:
|
1434
1433
|
* If the face doesn't provide glyph names or if the glyph index is
|
1435
1434
|
* invalid, nil is returned. The glyph name is truncated if it is
|
1436
1435
|
* longer than 1024 characters.
|
@@ -1455,7 +1454,7 @@ static VALUE ft_face_glyph_name(VALUE self, VALUE glyph_index) {
|
|
1455
1454
|
/*
|
1456
1455
|
* Get the ASCII Postscript name of a FT2::Face object.
|
1457
1456
|
*
|
1458
|
-
* Note:
|
1457
|
+
* Note:
|
1459
1458
|
* This should only work with Postscript and TrueType fonts. If the
|
1460
1459
|
* PostScript name is un-avaialble, nil is returned.
|
1461
1460
|
*
|
@@ -1468,7 +1467,7 @@ static VALUE ft_face_ps_name(VALUE self) {
|
|
1468
1467
|
FT_Face *face;
|
1469
1468
|
const char *str;
|
1470
1469
|
Data_Get_Struct(self, FT_Face, face);
|
1471
|
-
|
1470
|
+
|
1472
1471
|
if ((str = FT_Get_Postscript_Name(*face)) != NULL)
|
1473
1472
|
return rb_str_new2(str);
|
1474
1473
|
else
|
@@ -1523,11 +1522,11 @@ static VALUE ft_face_set_charmap(VALUE self, VALUE charmap) {
|
|
1523
1522
|
|
1524
1523
|
/*
|
1525
1524
|
* Return the first character code of the selected charmap and corresponding glyph index of a FT2::Face object.
|
1526
|
-
*
|
1525
|
+
*
|
1527
1526
|
* Note:
|
1528
1527
|
* Using this with FT2::Face#next_char will allow you to iterate
|
1529
1528
|
* through the charmap => glyph index mapping for the selected
|
1530
|
-
* charmap.
|
1529
|
+
* charmap.
|
1531
1530
|
*
|
1532
1531
|
* You should probably use the method FT2::Face#current_charmap
|
1533
1532
|
* instead.
|
@@ -1557,7 +1556,7 @@ static VALUE ft_face_first_char(VALUE self) {
|
|
1557
1556
|
|
1558
1557
|
/*
|
1559
1558
|
* Return the next character code of the selected charmap and corresponding glyph index of a FT2::Face object.
|
1560
|
-
*
|
1559
|
+
*
|
1561
1560
|
* Note:
|
1562
1561
|
* Using this with FT2::Face#first_char will allow you to iterate
|
1563
1562
|
* through the charmap => glyph index mapping for the selected
|
@@ -1592,7 +1591,7 @@ static VALUE ft_face_next_char(VALUE self, VALUE char_code) {
|
|
1592
1591
|
|
1593
1592
|
/*
|
1594
1593
|
* Return the character code to glyph index map of the selected charmap of a FT2::Face object.
|
1595
|
-
*
|
1594
|
+
*
|
1596
1595
|
* Note:
|
1597
1596
|
* Returns nil if the selected charmap is empty.
|
1598
1597
|
*
|
@@ -1618,7 +1617,7 @@ static VALUE ft_face_current_charmap(VALUE self) {
|
|
1618
1617
|
rb_hash_aset(rtn, UINT2NUM(c_code), UINT2NUM(g_idx));
|
1619
1618
|
c_code = FT_Get_Next_Char(*face, c_code, &g_idx);
|
1620
1619
|
}
|
1621
|
-
|
1620
|
+
|
1622
1621
|
return rtn;
|
1623
1622
|
}
|
1624
1623
|
|
@@ -1639,13 +1638,13 @@ static VALUE ft_glyphmetrics_init(VALUE self) {
|
|
1639
1638
|
return self;
|
1640
1639
|
}
|
1641
1640
|
|
1642
|
-
/*
|
1641
|
+
/*
|
1643
1642
|
* Get the glyph's width.
|
1644
1643
|
*
|
1645
|
-
* Note:
|
1644
|
+
* Note:
|
1646
1645
|
* Values are expressed in 26.6 fractional pixel format or in font
|
1647
1646
|
* units, depending on context.
|
1648
|
-
*
|
1647
|
+
*
|
1649
1648
|
* Aliases:
|
1650
1649
|
* FT2::GlyphMetrics#w
|
1651
1650
|
*
|
@@ -1660,13 +1659,13 @@ static VALUE ft_glyphmetrics_width(VALUE self) {
|
|
1660
1659
|
return INT2NUM(glyph->width);
|
1661
1660
|
}
|
1662
1661
|
|
1663
|
-
/*
|
1662
|
+
/*
|
1664
1663
|
* Get the glyph's height.
|
1665
1664
|
*
|
1666
|
-
* Note:
|
1665
|
+
* Note:
|
1667
1666
|
* Values are expressed in 26.6 fractional pixel format or in font
|
1668
1667
|
* units, depending on context.
|
1669
|
-
*
|
1668
|
+
*
|
1670
1669
|
* Aliases:
|
1671
1670
|
* FT2::GlyphMetrics#h
|
1672
1671
|
*
|
@@ -1681,13 +1680,13 @@ static VALUE ft_glyphmetrics_height(VALUE self) {
|
|
1681
1680
|
return INT2NUM(glyph->height);
|
1682
1681
|
}
|
1683
1682
|
|
1684
|
-
/*
|
1683
|
+
/*
|
1685
1684
|
* Get the glyph's left side bearing in horizontal layouts.
|
1686
1685
|
*
|
1687
|
-
* Note:
|
1686
|
+
* Note:
|
1688
1687
|
* Values are expressed in 26.6 fractional pixel format or in font
|
1689
1688
|
* units, depending on context.
|
1690
|
-
*
|
1689
|
+
*
|
1691
1690
|
* Aliases:
|
1692
1691
|
* FT2::GlyphMetrics#horiBearingX
|
1693
1692
|
* FT2::GlyphMetrics#h_bear_x
|
@@ -1706,13 +1705,13 @@ static VALUE ft_glyphmetrics_h_bear_x(VALUE self) {
|
|
1706
1705
|
return INT2NUM(glyph->horiBearingX);
|
1707
1706
|
}
|
1708
1707
|
|
1709
|
-
/*
|
1708
|
+
/*
|
1710
1709
|
* Get the glyph's top side bearing in horizontal layouts.
|
1711
1710
|
*
|
1712
|
-
* Note:
|
1711
|
+
* Note:
|
1713
1712
|
* Values are expressed in 26.6 fractional pixel format or in font
|
1714
1713
|
* units, depending on context.
|
1715
|
-
*
|
1714
|
+
*
|
1716
1715
|
* Aliases:
|
1717
1716
|
* FT2::GlyphMetrics#horiBearingY
|
1718
1717
|
* FT2::GlyphMetrics#h_bear_y
|
@@ -1731,13 +1730,13 @@ static VALUE ft_glyphmetrics_h_bear_y(VALUE self) {
|
|
1731
1730
|
return INT2NUM(glyph->horiBearingY);
|
1732
1731
|
}
|
1733
1732
|
|
1734
|
-
/*
|
1733
|
+
/*
|
1735
1734
|
* Get the glyph's advance width for horizontal layouts.
|
1736
1735
|
*
|
1737
|
-
* Note:
|
1736
|
+
* Note:
|
1738
1737
|
* Values are expressed in 26.6 fractional pixel format or in font
|
1739
1738
|
* units, depending on context.
|
1740
|
-
*
|
1739
|
+
*
|
1741
1740
|
* Aliases:
|
1742
1741
|
* FT2::GlyphMetrics#horiAdvance
|
1743
1742
|
* FT2::GlyphMetrics#ha
|
@@ -1754,13 +1753,13 @@ static VALUE ft_glyphmetrics_h_advance(VALUE self) {
|
|
1754
1753
|
return INT2NUM(glyph->horiAdvance);
|
1755
1754
|
}
|
1756
1755
|
|
1757
|
-
/*
|
1756
|
+
/*
|
1758
1757
|
* Get the glyph's left side bearing in vertical layouts.
|
1759
1758
|
*
|
1760
|
-
* Note:
|
1759
|
+
* Note:
|
1761
1760
|
* Values are expressed in 26.6 fractional pixel format or in font
|
1762
1761
|
* units, depending on context.
|
1763
|
-
*
|
1762
|
+
*
|
1764
1763
|
* Aliases:
|
1765
1764
|
* FT2::GlyphMetrics#vertBearingX
|
1766
1765
|
* FT2::GlyphMetrics#v_bear_x
|
@@ -1779,13 +1778,13 @@ static VALUE ft_glyphmetrics_v_bear_x(VALUE self) {
|
|
1779
1778
|
return INT2NUM(glyph->vertBearingX);
|
1780
1779
|
}
|
1781
1780
|
|
1782
|
-
/*
|
1781
|
+
/*
|
1783
1782
|
* Get the glyph's top side bearing in vertical layouts.
|
1784
1783
|
*
|
1785
|
-
* Note:
|
1784
|
+
* Note:
|
1786
1785
|
* Values are expressed in 26.6 fractional pixel format or in font
|
1787
1786
|
* units, depending on context.
|
1788
|
-
*
|
1787
|
+
*
|
1789
1788
|
* Aliases:
|
1790
1789
|
* FT2::GlyphMetrics#vertBearingY
|
1791
1790
|
* FT2::GlyphMetrics#v_bear_y
|
@@ -1804,13 +1803,13 @@ static VALUE ft_glyphmetrics_v_bear_y(VALUE self) {
|
|
1804
1803
|
return INT2NUM(glyph->vertBearingY);
|
1805
1804
|
}
|
1806
1805
|
|
1807
|
-
/*
|
1806
|
+
/*
|
1808
1807
|
* Get the glyph's advance width for vertical layouts.
|
1809
1808
|
*
|
1810
|
-
* Note:
|
1809
|
+
* Note:
|
1811
1810
|
* Values are expressed in 26.6 fractional pixel format or in font
|
1812
1811
|
* units, depending on context.
|
1813
|
-
*
|
1812
|
+
*
|
1814
1813
|
* Aliases:
|
1815
1814
|
* FT2::GlyphMetrics#vertAdvance
|
1816
1815
|
* FT2::GlyphMetrics#va
|
@@ -1863,7 +1862,7 @@ static VALUE ft_glyphslot_init(VALUE self) {
|
|
1863
1862
|
* Render Modes:
|
1864
1863
|
* FT2::RenderMode::NORMAL
|
1865
1864
|
* FT2::RenderMode::MONO
|
1866
|
-
*
|
1865
|
+
*
|
1867
1866
|
* Examples:
|
1868
1867
|
* slot.render FT2::RenderMode::NORMAL
|
1869
1868
|
*
|
@@ -1875,7 +1874,7 @@ static VALUE ft_glyphslot_render(VALUE self, VALUE render_mode) {
|
|
1875
1874
|
Data_Get_Struct(self, FT_GlyphSlot, glyph);
|
1876
1875
|
if (render_mode == Qnil)
|
1877
1876
|
render_mode = INT2FIX(ft_render_mode_normal);
|
1878
|
-
|
1877
|
+
|
1879
1878
|
err = FT_Render_Glyph(*glyph, NUM2INT(render_mode));
|
1880
1879
|
if (err != FT_Err_Ok)
|
1881
1880
|
handle_error(err);
|
@@ -1931,7 +1930,7 @@ static VALUE ft_glyphslot_face(VALUE self) {
|
|
1931
1930
|
Data_Get_Struct(self, FT_GlyphSlot, glyph);
|
1932
1931
|
face = malloc(sizeof(FT_Face));
|
1933
1932
|
*face = (*glyph)->face;
|
1934
|
-
|
1933
|
+
|
1935
1934
|
/* do we really want to dont_free() cb here? */
|
1936
1935
|
return Data_Wrap_Struct(cFace, 0, dont_free, face);
|
1937
1936
|
}
|
@@ -1956,7 +1955,7 @@ static VALUE ft_glyphslot_next(VALUE self) {
|
|
1956
1955
|
Data_Get_Struct(self, FT_GlyphSlot, glyph);
|
1957
1956
|
next = malloc(sizeof(FT_GlyphSlot));
|
1958
1957
|
*next = (*glyph)->next;
|
1959
|
-
|
1958
|
+
|
1960
1959
|
/* do we really want to dont_free() cb here? */
|
1961
1960
|
return Data_Wrap_Struct(cGlyphSlot, 0, dont_free, next);
|
1962
1961
|
}
|
@@ -1975,7 +1974,7 @@ static VALUE ft_glyphslot_metrics(VALUE self) {
|
|
1975
1974
|
Data_Get_Struct(self, FT_GlyphSlot, glyph);
|
1976
1975
|
metrics = malloc(sizeof(FT_Glyph_Metrics));
|
1977
1976
|
*metrics = (*glyph)->metrics;
|
1978
|
-
|
1977
|
+
|
1979
1978
|
return Data_Wrap_Struct(cGlyphMetrics, 0, dont_free, metrics);
|
1980
1979
|
}
|
1981
1980
|
|
@@ -1987,7 +1986,7 @@ static VALUE ft_glyphslot_metrics(VALUE self) {
|
|
1987
1986
|
* horizontal advance width for the FT2:GlyphSlot (i.e. the scaled and
|
1988
1987
|
* unhinted value of the hori advance). This can be important to
|
1989
1988
|
* perform correct WYSIWYG layout.
|
1990
|
-
*
|
1989
|
+
*
|
1991
1990
|
* Note:
|
1992
1991
|
* The return value is expressed by default in 16.16 pixels. However,
|
1993
1992
|
* when the FT2::GlyphSlot is loaded with the FT2::Load::LINEAR_DESIGN
|
@@ -2018,7 +2017,7 @@ static VALUE ft_glyphslot_h_advance(VALUE self) {
|
|
2018
2017
|
* vertical advance height for the FT2:GlyphSlot (i.e. the scaled and
|
2019
2018
|
* unhinted value of the hori advance). This can be important to
|
2020
2019
|
* perform correct WYSIWYG layout.
|
2021
|
-
*
|
2020
|
+
*
|
2022
2021
|
* Note:
|
2023
2022
|
* The return value is expressed by default in 16.16 pixels. However,
|
2024
2023
|
* when the FT2::GlyphSlot is loaded with the FT2::Load::LINEAR_DESIGN
|
@@ -2093,14 +2092,14 @@ static VALUE ft_glyphslot_bitmap(VALUE self) {
|
|
2093
2092
|
Data_Get_Struct(self, FT_GlyphSlot, glyph);
|
2094
2093
|
bitmap = malloc(sizeof(FT_Bitmap));
|
2095
2094
|
*bitmap = (*glyph)->bitmap;
|
2096
|
-
|
2095
|
+
|
2097
2096
|
return Data_Wrap_Struct(cBitmap, 0, dont_free, bitmap);
|
2098
2097
|
}
|
2099
2098
|
|
2100
2099
|
/*
|
2101
2100
|
* Get the left bearing (in pixels) of a bitmap format FT2::GlyphSlot object.
|
2102
2101
|
*
|
2103
|
-
* Note:
|
2102
|
+
* Note:
|
2104
2103
|
* Only valid if the format is FT2::GlyphFormat::BITMAP.
|
2105
2104
|
*
|
2106
2105
|
* Examples:
|
@@ -2116,7 +2115,7 @@ static VALUE ft_glyphslot_bitmap_left(VALUE self) {
|
|
2116
2115
|
/*
|
2117
2116
|
* Get the top bearing (in pixels) of a bitmap format FT2::GlyphSlot object.
|
2118
2117
|
*
|
2119
|
-
* Note:
|
2118
|
+
* Note:
|
2120
2119
|
* Only valid if the format is FT2::GlyphFormat::BITMAP. The value
|
2121
2120
|
* returned is the distance from the baseline to the topmost glyph
|
2122
2121
|
* scanline, upwards y-coordinates being positive.
|
@@ -2148,7 +2147,7 @@ static VALUE ft_glyphslot_outline(VALUE self) {
|
|
2148
2147
|
Data_Get_Struct(self, FT_GlyphSlot, glyph);
|
2149
2148
|
outline = malloc(sizeof(FT_Outline));
|
2150
2149
|
*outline = (*glyph)->outline;
|
2151
|
-
|
2150
|
+
|
2152
2151
|
return Data_Wrap_Struct(cOutline, 0, dont_free, outline);
|
2153
2152
|
}
|
2154
2153
|
|
@@ -2190,12 +2189,12 @@ static VALUE ft_glyphslot_subglyphs(VALUE self) {
|
|
2190
2189
|
|
2191
2190
|
/* FIXME: this probably doesn't work */
|
2192
2191
|
rtn = rb_ary_new();
|
2193
|
-
/*
|
2192
|
+
/*
|
2194
2193
|
* for (i = 0; i < num; i++)
|
2195
2194
|
* rb_ary_push(rtn, Data_Wrap_Struct(cSubGlyph, 0,
|
2196
2195
|
* dont_free,
|
2197
2196
|
* (*glyph)->subglyphs[i]));
|
2198
|
-
*/
|
2197
|
+
*/
|
2199
2198
|
return rtn;
|
2200
2199
|
}
|
2201
2200
|
|
@@ -2339,8 +2338,8 @@ static VALUE ft_size_metrics_y_ppem(VALUE self) {
|
|
2339
2338
|
*
|
2340
2339
|
* Description:
|
2341
2340
|
* Scale that is used to directly scale horizontal distances from
|
2342
|
-
* design space to 1/64th of device pixels.
|
2343
|
-
*
|
2341
|
+
* design space to 1/64th of device pixels.
|
2342
|
+
*
|
2344
2343
|
* Examples:
|
2345
2344
|
* x_scale = face.size.metrics.x_scale
|
2346
2345
|
*
|
@@ -2356,8 +2355,8 @@ static VALUE ft_size_metrics_x_scale(VALUE self) {
|
|
2356
2355
|
*
|
2357
2356
|
* Description:
|
2358
2357
|
* Scale that is used to directly scale vertical distances from
|
2359
|
-
* design space to 1/64th of device pixels.
|
2360
|
-
*
|
2358
|
+
* design space to 1/64th of device pixels.
|
2359
|
+
*
|
2361
2360
|
* Examples:
|
2362
2361
|
* y_scale = face.size.metrics.y_scale
|
2363
2362
|
*
|
@@ -2393,8 +2392,8 @@ static VALUE ft_glyph_init(VALUE self) {
|
|
2393
2392
|
|
2394
2393
|
/*
|
2395
2394
|
* Get the library of a FT2::Glyph object.
|
2396
|
-
*
|
2397
|
-
* Note:
|
2395
|
+
*
|
2396
|
+
* Note:
|
2398
2397
|
* Glyph objects are not owned or tracked by the library.
|
2399
2398
|
*
|
2400
2399
|
* Examples:
|
@@ -2409,7 +2408,7 @@ static VALUE ft_glyph_library(VALUE self) {
|
|
2409
2408
|
|
2410
2409
|
/*
|
2411
2410
|
* Get the FreeType2 class of a FT2::Glyph object.
|
2412
|
-
*
|
2411
|
+
*
|
2413
2412
|
* Note:
|
2414
2413
|
* This is _not_ the Ruby class of the object.
|
2415
2414
|
*
|
@@ -2428,7 +2427,7 @@ static VALUE ft_glyph_class(VALUE self) {
|
|
2428
2427
|
|
2429
2428
|
/*
|
2430
2429
|
* Get the format of a FT2::Glyph object's image.
|
2431
|
-
*
|
2430
|
+
*
|
2432
2431
|
* Glyph Formats:
|
2433
2432
|
* FT2::GlyphFormat::COMPOSITE
|
2434
2433
|
* FT2::GlyphFormat::BITMAP
|
@@ -2447,7 +2446,7 @@ static VALUE ft_glyph_format(VALUE self) {
|
|
2447
2446
|
|
2448
2447
|
/*
|
2449
2448
|
* Get the advance of a FT2::Glyph object.
|
2450
|
-
*
|
2449
|
+
*
|
2451
2450
|
* Description:
|
2452
2451
|
* This vector gives the FT2::Glyph object's advance width.
|
2453
2452
|
*
|
@@ -2486,23 +2485,23 @@ static VALUE ft_glyph_dup(VALUE self) {
|
|
2486
2485
|
err = FT_Glyph_Copy(*glyph, new_glyph);
|
2487
2486
|
if (err != FT_Err_Ok)
|
2488
2487
|
handle_error(err);
|
2489
|
-
|
2488
|
+
|
2490
2489
|
return Data_Wrap_Struct(cGlyph, 0, glyph_free, new_glyph);
|
2491
2490
|
}
|
2492
2491
|
|
2493
2492
|
/*
|
2494
2493
|
* Transform a FT2::Glyph object if it's format is scalable.
|
2495
|
-
*
|
2494
|
+
*
|
2496
2495
|
* Description:
|
2497
2496
|
* matrix: A pointer to a 2x2 matrix to apply.
|
2498
2497
|
* delta: A pointer to a 2d vector to apply. Coordinates are
|
2499
2498
|
* expressed in 1/64th of a pixel.
|
2500
|
-
*
|
2499
|
+
*
|
2501
2500
|
* Note:
|
2502
2501
|
* The transformation matrix is also applied to the glyph's advance
|
2503
2502
|
* vector. This method returns an error if the glyph format is not
|
2504
2503
|
* scalable (eg, if it's not equal to zero).
|
2505
|
-
*
|
2504
|
+
*
|
2506
2505
|
* Examples:
|
2507
2506
|
* matrix = [[1, 0],
|
2508
2507
|
* [0, 1]]
|
@@ -2528,7 +2527,7 @@ static VALUE ft_glyph_transform(VALUE self, VALUE matrix_ary, VALUE delta_ary) {
|
|
2528
2527
|
err = FT_Glyph_Transform(*glyph, &matrix, &delta);
|
2529
2528
|
if (err != FT_Err_Ok)
|
2530
2529
|
handle_error(err);
|
2531
|
-
|
2530
|
+
|
2532
2531
|
return self;
|
2533
2532
|
}
|
2534
2533
|
|
@@ -2546,7 +2545,7 @@ static VALUE ft_glyph_transform(VALUE self, VALUE matrix_ary, VALUE delta_ary) {
|
|
2546
2545
|
* box can take much more time as it needs to walk over all segments
|
2547
2546
|
* and arcs in the outline. To get the latter, you can use the
|
2548
2547
|
* `ftbbox' component which is dedicated to this single task.
|
2549
|
-
*
|
2548
|
+
*
|
2550
2549
|
* Notes:
|
2551
2550
|
* Coordinates are relative to the FT2::Glyph object's origin, using
|
2552
2551
|
* the Y-upwards convention.
|
@@ -2579,7 +2578,7 @@ static VALUE ft_glyph_transform(VALUE self, VALUE matrix_ary, VALUE delta_ary) {
|
|
2579
2578
|
* to FT2::GlyphBBox::PIXELS.
|
2580
2579
|
*
|
2581
2580
|
* The default value for `bbox_mode' is FT2::GlyphBBox::PIXELS.
|
2582
|
-
*
|
2581
|
+
*
|
2583
2582
|
* Aliases:
|
2584
2583
|
* FT2::Glyph#control_box
|
2585
2584
|
*
|
@@ -2601,7 +2600,7 @@ static VALUE ft_glyph_cbox(VALUE self, VALUE bbox_mode) {
|
|
2601
2600
|
rb_ary_push(ary, INT2FIX(bbox.yMin));
|
2602
2601
|
rb_ary_push(ary, INT2FIX(bbox.xMax));
|
2603
2602
|
rb_ary_push(ary, INT2FIX(bbox.yMax));
|
2604
|
-
|
2603
|
+
|
2605
2604
|
return ary;
|
2606
2605
|
}
|
2607
2606
|
|
@@ -2610,7 +2609,7 @@ static VALUE ft_glyph_cbox(VALUE self, VALUE bbox_mode) {
|
|
2610
2609
|
*
|
2611
2610
|
* Description:
|
2612
2611
|
* Converts a FT2::Glyph object to a FT2::BitmapGlyph object.
|
2613
|
-
*
|
2612
|
+
*
|
2614
2613
|
* render_mode: A set of bit flags that describe how the data is.
|
2615
2614
|
* origin: A vector used to translate the glyph image before
|
2616
2615
|
* rendering. Can be nil (if no translation). The
|
@@ -2618,7 +2617,7 @@ static VALUE ft_glyph_cbox(VALUE self, VALUE bbox_mode) {
|
|
2618
2617
|
* destroy: A boolean that indicates that the original glyph
|
2619
2618
|
* image should be destroyed by this function. It is
|
2620
2619
|
* never destroyed in case of error.
|
2621
|
-
*
|
2620
|
+
*
|
2622
2621
|
* Aliases:
|
2623
2622
|
* FT2::Glyph#to_bitmap
|
2624
2623
|
*
|
@@ -2668,13 +2667,13 @@ static VALUE ft_bmapglyph_init(VALUE self) {
|
|
2668
2667
|
* The top-side bearing, i.e., the vertical distance from the current
|
2669
2668
|
* pen position to the top border of the glyph bitmap. This distance
|
2670
2669
|
* is positive for upwards-y.
|
2671
|
-
*
|
2670
|
+
*
|
2672
2671
|
* Note:
|
2673
2672
|
* FT2::BitmapGlyph is a subclass of FT2::Glyph.
|
2674
2673
|
*
|
2675
2674
|
* Examples:
|
2676
2675
|
* y = bmap_glyph.top
|
2677
|
-
*
|
2676
|
+
*
|
2678
2677
|
*/
|
2679
2678
|
static VALUE ft_bmapglyph_top(VALUE self) {
|
2680
2679
|
FT_BitmapGlyph *glyph;
|
@@ -2688,13 +2687,13 @@ static VALUE ft_bmapglyph_top(VALUE self) {
|
|
2688
2687
|
* Description:
|
2689
2688
|
* The left-side bearing, i.e., the horizontal distance from the
|
2690
2689
|
* current pen position to the left border of the glyph bitmap.
|
2691
|
-
*
|
2690
|
+
*
|
2692
2691
|
* Note:
|
2693
2692
|
* FT2::BitmapGlyph is a subclass of FT2::Glyph.
|
2694
2693
|
*
|
2695
2694
|
* Examples:
|
2696
2695
|
* x = bmap_glyph.left
|
2697
|
-
*
|
2696
|
+
*
|
2698
2697
|
*/
|
2699
2698
|
static VALUE ft_bmapglyph_left(VALUE self) {
|
2700
2699
|
FT_BitmapGlyph *glyph;
|
@@ -2865,12 +2864,10 @@ void Init_ft2(void) {
|
|
2865
2864
|
/* define top-level FT2 module */
|
2866
2865
|
mFt2 = rb_define_module("FT2");
|
2867
2866
|
|
2868
|
-
/* define FT2::VERSION */
|
2869
|
-
rb_define_const(mFt2, "VERSION", rb_str_new2(VERSION));
|
2870
2867
|
rb_define_singleton_method(mFt2, "version", ft_version, 0);
|
2871
|
-
|
2868
|
+
|
2872
2869
|
define_constants();
|
2873
|
-
|
2870
|
+
|
2874
2871
|
/****************************/
|
2875
2872
|
/* define FT2::Bitmap class */
|
2876
2873
|
/****************************/
|
@@ -2902,10 +2899,10 @@ void Init_ft2(void) {
|
|
2902
2899
|
|
2903
2900
|
rb_define_method(cFace, "faces", ft_face_faces, 0);
|
2904
2901
|
rb_define_alias(cFace, "num_faces", "faces");
|
2905
|
-
|
2902
|
+
|
2906
2903
|
rb_define_method(cFace, "index", ft_face_index, 0);
|
2907
2904
|
rb_define_alias(cFace, "face_index", "index");
|
2908
|
-
|
2905
|
+
|
2909
2906
|
rb_define_method(cFace, "flags", ft_face_flags, 0);
|
2910
2907
|
rb_define_alias(cFace, "face_flags", "flags");
|
2911
2908
|
|
@@ -2920,7 +2917,7 @@ void Init_ft2(void) {
|
|
2920
2917
|
rb_define_const(cFace, "GLYPH_NAMES", INT2FIX(FT_FACE_FLAG_GLYPH_NAMES));
|
2921
2918
|
rb_define_const(cFace, "EXTERNAL_STREAM", INT2FIX(FT_FACE_FLAG_EXTERNAL_STREAM));
|
2922
2919
|
rb_define_const(cFace, "FAST_GLYPHS", INT2FIX(FT_FACE_FLAG_FAST_GLYPHS));
|
2923
|
-
|
2920
|
+
|
2924
2921
|
rb_define_method(cFace, "scalable?", ft_face_flag_scalable, 0);
|
2925
2922
|
rb_define_method(cFace, "fixed_sizes?", ft_face_flag_fixed_sizes, 0);
|
2926
2923
|
rb_define_method(cFace, "fixed_width?", ft_face_flag_fixed_width, 0);
|
@@ -2930,15 +2927,15 @@ void Init_ft2(void) {
|
|
2930
2927
|
rb_define_method(cFace, "kerning?", ft_face_flag_kerning, 0);
|
2931
2928
|
rb_define_method(cFace, "external_stream?", ft_face_flag_external_stream, 0);
|
2932
2929
|
rb_define_method(cFace, "fast_glyphs?", ft_face_flag_fast_glyphs, 0);
|
2933
|
-
|
2930
|
+
|
2934
2931
|
rb_define_method(cFace, "style_flags", ft_face_style_flags, 0);
|
2935
|
-
|
2932
|
+
|
2936
2933
|
rb_define_const(cFace, "BOLD", INT2FIX(FT_STYLE_FLAG_BOLD));
|
2937
2934
|
rb_define_const(cFace, "ITALIC", INT2FIX(FT_STYLE_FLAG_ITALIC));
|
2938
2935
|
|
2939
2936
|
rb_define_method(cFace, "bold?", ft_face_flag_bold, 0);
|
2940
2937
|
rb_define_method(cFace, "italic?", ft_face_flag_italic, 0);
|
2941
|
-
|
2938
|
+
|
2942
2939
|
rb_define_method(cFace, "glyphs", ft_face_glyphs, 0);
|
2943
2940
|
rb_define_alias(cFace, "num_glyphs", "glyphs");
|
2944
2941
|
|
@@ -2950,10 +2947,10 @@ void Init_ft2(void) {
|
|
2950
2947
|
|
2951
2948
|
rb_define_method(cFace, "available_sizes", ft_face_available_sizes, 0);
|
2952
2949
|
rb_define_alias(cFace, "num_available_sizes", "available_sizes");
|
2953
|
-
|
2950
|
+
|
2954
2951
|
rb_define_method(cFace, "num_charmaps", ft_face_num_charmaps, 0);
|
2955
2952
|
rb_define_method(cFace, "charmaps", ft_face_charmaps, 0);
|
2956
|
-
|
2953
|
+
|
2957
2954
|
rb_define_method(cFace, "bbox", ft_face_bbox, 0);
|
2958
2955
|
|
2959
2956
|
rb_define_method(cFace, "units_per_em", ft_face_units_per_em, 0);
|
@@ -2978,10 +2975,10 @@ void Init_ft2(void) {
|
|
2978
2975
|
|
2979
2976
|
rb_define_method(cFace, "char_index", ft_face_char_index, 1);
|
2980
2977
|
rb_define_method(cFace, "name_index", ft_face_name_index, 1);
|
2981
|
-
|
2978
|
+
|
2982
2979
|
rb_define_method(cFace, "kerning", ft_face_kerning, 3);
|
2983
2980
|
rb_define_alias(cFace, "get_kerning", "kerning");
|
2984
|
-
|
2981
|
+
|
2985
2982
|
rb_define_method(cFace, "glyph_name", ft_face_glyph_name, 1);
|
2986
2983
|
rb_define_method(cFace, "postscript_name", ft_face_ps_name, 0);
|
2987
2984
|
rb_define_alias(cFace, "name", "postscript_name");
|
@@ -2989,12 +2986,12 @@ void Init_ft2(void) {
|
|
2989
2986
|
rb_define_method(cFace, "select_charmap", ft_face_select_charmap, 1);
|
2990
2987
|
rb_define_method(cFace, "set_charmap", ft_face_set_charmap, 1);
|
2991
2988
|
rb_define_alias(cFace, "charmap=", "set_charmap");
|
2992
|
-
|
2989
|
+
|
2993
2990
|
rb_define_method(cFace, "first_char", ft_face_first_char, 0);
|
2994
2991
|
rb_define_method(cFace, "next_char", ft_face_next_char, 1);
|
2995
|
-
|
2992
|
+
|
2996
2993
|
rb_define_method(cFace, "current_charmap", ft_face_current_charmap, 0);
|
2997
|
-
|
2994
|
+
|
2998
2995
|
rb_define_method(cFace, "set_char_size", ft_face_set_char_size, 4);
|
2999
2996
|
rb_define_method(cFace, "set_pixel_sizes", ft_face_set_pixel_sizes, 2);
|
3000
2997
|
rb_define_method(cFace, "set_transform", ft_face_set_transform, 2);
|
@@ -3054,7 +3051,7 @@ void Init_ft2(void) {
|
|
3054
3051
|
rb_define_alias(cGlyphSlot, "linearVertAdvance", "h_advance");
|
3055
3052
|
rb_define_alias(cGlyphSlot, "v_adv", "h_advance");
|
3056
3053
|
rb_define_alias(cGlyphSlot, "va", "h_advance");
|
3057
|
-
|
3054
|
+
|
3058
3055
|
rb_define_method(cGlyphSlot, "advance", ft_glyphslot_advance, 0);
|
3059
3056
|
rb_define_method(cGlyphSlot, "format", ft_glyphslot_format, 0);
|
3060
3057
|
rb_define_method(cGlyphSlot, "bitmap", ft_glyphslot_bitmap, 0);
|
@@ -3065,7 +3062,7 @@ void Init_ft2(void) {
|
|
3065
3062
|
rb_define_method(cGlyphSlot, "subglyphs", ft_glyphslot_subglyphs, 0);
|
3066
3063
|
rb_define_method(cGlyphSlot, "control_data", ft_glyphslot_control_data, 0);
|
3067
3064
|
rb_define_method(cGlyphSlot, "control_len", ft_glyphslot_control_len, 0);
|
3068
|
-
|
3065
|
+
|
3069
3066
|
rb_define_method(cGlyphSlot, "render", ft_glyphslot_render, 1);
|
3070
3067
|
rb_define_alias(cGlyphSlot, "render_glyph", "render");
|
3071
3068
|
|
@@ -3076,12 +3073,12 @@ void Init_ft2(void) {
|
|
3076
3073
|
/* define FT2::Library class */
|
3077
3074
|
/*****************************/
|
3078
3075
|
cLibrary = rb_define_class_under(mFt2, "Library", rb_cObject);
|
3079
|
-
|
3076
|
+
|
3080
3077
|
/****************************/
|
3081
3078
|
/* define FT2::Memory class */
|
3082
3079
|
/****************************/
|
3083
3080
|
cMemory = rb_define_class_under(mFt2, "Memory", rb_cObject);
|
3084
|
-
|
3081
|
+
|
3085
3082
|
/*****************************/
|
3086
3083
|
/* define FT2::Outline class */
|
3087
3084
|
/*****************************/
|