mirror of
https://github.com/servo/servo.git
synced 2025-06-25 09:34:32 +01:00
Update to 0.6, make buildable on Linux.
This commit is contained in:
parent
762c7e0b5d
commit
c193011381
7 changed files with 21 additions and 29 deletions
|
@ -1 +1 @@
|
||||||
Subproject commit 5fc77111bbb003fbcd9ba15e4813b31eccf6943c
|
Subproject commit 7d2543dceeb05741637e6070d700ae3a85495010
|
|
@ -1 +1 @@
|
||||||
Subproject commit 2cdbb170c3591c08a872e30584fcaf490680a100
|
Subproject commit a508df34eae1d5c2917200d94980989e309081cc
|
|
@ -1 +1 @@
|
||||||
Subproject commit 6852c4a04e44d29dc410666ef551654a7e181d6c
|
Subproject commit e7e82c62aae80d5502b89c8cbbb6f7d4b341b9e2
|
|
@ -1 +1 @@
|
||||||
Subproject commit 754ac8e774d9ac7b8577b6a0b775a54e1f00a262
|
Subproject commit c38348c219caf2be3cc50baa4ffa7a06f041e29b
|
|
@ -1,25 +1,22 @@
|
||||||
extern mod freetype;
|
extern mod freetype;
|
||||||
extern mod fontconfig;
|
extern mod fontconfig;
|
||||||
|
|
||||||
use gfx_font::{FontHandle, FontHandleMethods};
|
use gfx_font::FontHandleMethods;
|
||||||
use gfx_font_list::{FontEntry, FontFamily, FontFamilyMap};
|
use gfx_font_list::{FontEntry, FontFamily, FontFamilyMap};
|
||||||
use gfx_font_context::FontContextHandleMethods;
|
use gfx_font_context::FontContextHandleMethods;
|
||||||
use freetype_impl::font_context::FreeTypeFontContextHandle;
|
use freetype_impl::font_context::FreeTypeFontContextHandle;
|
||||||
use freetype_impl::font::FreeTypeFontHandle;
|
use freetype_impl::font::FreeTypeFontHandle;
|
||||||
use self::fontconfig::fontconfig::{FcConfig, FcFontSet, FcChar8,
|
use self::fontconfig::fontconfig::{FcChar8, FcResultMatch, FcSetSystem,
|
||||||
FcResultMatch, FcSetSystem, FcPattern,
|
|
||||||
FcResultNoMatch, FcMatchPattern};
|
FcResultNoMatch, FcMatchPattern};
|
||||||
use self::fontconfig::fontconfig::bindgen::{
|
use self::fontconfig::fontconfig::bindgen::{
|
||||||
FcConfigGetCurrent, FcConfigGetFonts, FcPatternGetString,
|
FcConfigGetCurrent, FcConfigGetFonts, FcPatternGetString,
|
||||||
FcInitReinitialize, FcPatternDestroy, FcPatternReference,
|
FcPatternDestroy, FcFontSetDestroy, FcConfigSubstitute,
|
||||||
FcFontSetDestroy, FcCharSetDestroy, FcConfigSubstitute,
|
|
||||||
FcDefaultSubstitute, FcPatternCreate, FcPatternAddString,
|
FcDefaultSubstitute, FcPatternCreate, FcPatternAddString,
|
||||||
FcFontMatch, FcFontSetCreate, FcFontSetList, FcPatternPrint,
|
FcFontMatch, FcFontSetList, FcObjectSetCreate, FcObjectSetDestroy,
|
||||||
FcObjectSetCreate, FcObjectSetDestroy, FcObjectSetAdd,
|
FcObjectSetAdd, FcPatternGetInteger
|
||||||
FcPatternGetInteger
|
|
||||||
};
|
};
|
||||||
|
|
||||||
use core::hashmap::linear;
|
use core::hashmap::HashMap;
|
||||||
use core::libc::c_int;
|
use core::libc::c_int;
|
||||||
use core::ptr::Ptr;
|
use core::ptr::Ptr;
|
||||||
use native;
|
use native;
|
||||||
|
@ -34,7 +31,7 @@ pub impl FontconfigFontListHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_available_families(&self) -> FontFamilyMap {
|
fn get_available_families(&self) -> FontFamilyMap {
|
||||||
let mut family_map : FontFamilyMap = linear::LinearMap::new();
|
let mut family_map : FontFamilyMap = HashMap::new();
|
||||||
unsafe {
|
unsafe {
|
||||||
let config = FcConfigGetCurrent();
|
let config = FcConfigGetCurrent();
|
||||||
let fontSet = FcConfigGetFonts(config, FcSetSystem);
|
let fontSet = FcConfigGetFonts(config, FcSetSystem);
|
||||||
|
@ -65,13 +62,13 @@ pub impl FontconfigFontListHandle {
|
||||||
do str::as_c_str("family") |FC_FAMILY| {
|
do str::as_c_str("family") |FC_FAMILY| {
|
||||||
do str::as_c_str(family.family_name) |family_name| {
|
do str::as_c_str(family.family_name) |family_name| {
|
||||||
let pattern = FcPatternCreate();
|
let pattern = FcPatternCreate();
|
||||||
fail_unless!(pattern.is_not_null());
|
assert!(pattern.is_not_null());
|
||||||
let family_name = family_name as *FcChar8;
|
let family_name = family_name as *FcChar8;
|
||||||
let ok = FcPatternAddString(pattern, FC_FAMILY, family_name);
|
let ok = FcPatternAddString(pattern, FC_FAMILY, family_name);
|
||||||
fail_unless!(ok != 0);
|
assert!(ok != 0);
|
||||||
|
|
||||||
let object_set = FcObjectSetCreate();
|
let object_set = FcObjectSetCreate();
|
||||||
fail_unless!(object_set.is_not_null());
|
assert!(object_set.is_not_null());
|
||||||
|
|
||||||
str::as_c_str("file", |FC_FILE| FcObjectSetAdd(object_set, FC_FILE) );
|
str::as_c_str("file", |FC_FILE| FcObjectSetAdd(object_set, FC_FILE) );
|
||||||
str::as_c_str("index", |FC_INDEX| FcObjectSetAdd(object_set, FC_INDEX) );
|
str::as_c_str("index", |FC_INDEX| FcObjectSetAdd(object_set, FC_INDEX) );
|
||||||
|
|
|
@ -4,7 +4,6 @@ use native;
|
||||||
use freetype_impl::font_context::FreeTypeFontContextHandle;
|
use freetype_impl::font_context::FreeTypeFontContextHandle;
|
||||||
use gfx_font::{
|
use gfx_font::{
|
||||||
CSSFontWeight,
|
CSSFontWeight,
|
||||||
FontHandle,
|
|
||||||
FontHandleMethods,
|
FontHandleMethods,
|
||||||
FontMetrics,
|
FontMetrics,
|
||||||
FontTable,
|
FontTable,
|
||||||
|
@ -30,7 +29,6 @@ use text::util::{float_to_fixed, fixed_to_float};
|
||||||
|
|
||||||
use self::freetype::freetype::{
|
use self::freetype::freetype::{
|
||||||
FTErrorMethods,
|
FTErrorMethods,
|
||||||
FT_Error,
|
|
||||||
FT_F26Dot6,
|
FT_F26Dot6,
|
||||||
FT_Face,
|
FT_Face,
|
||||||
FT_FaceRec,
|
FT_FaceRec,
|
||||||
|
@ -38,7 +36,6 @@ use self::freetype::freetype::{
|
||||||
FT_Library,
|
FT_Library,
|
||||||
FT_Long,
|
FT_Long,
|
||||||
FT_ULong,
|
FT_ULong,
|
||||||
FT_Size,
|
|
||||||
FT_SizeRec,
|
FT_SizeRec,
|
||||||
FT_UInt,
|
FT_UInt,
|
||||||
FT_Size_Metrics,
|
FT_Size_Metrics,
|
||||||
|
@ -47,8 +44,6 @@ use self::freetype::freetype::{
|
||||||
ft_sfnt_os2
|
ft_sfnt_os2
|
||||||
};
|
};
|
||||||
use self::freetype::freetype::bindgen::{
|
use self::freetype::freetype::bindgen::{
|
||||||
FT_Init_FreeType,
|
|
||||||
FT_Done_FreeType,
|
|
||||||
FT_New_Memory_Face,
|
FT_New_Memory_Face,
|
||||||
FT_Done_Face,
|
FT_Done_Face,
|
||||||
FT_Get_Char_Index,
|
FT_Get_Char_Index,
|
||||||
|
@ -90,9 +85,10 @@ pub struct FreeTypeFontHandle {
|
||||||
face: FT_Face,
|
face: FT_Face,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[unsafe_destructor]
|
||||||
impl Drop for FreeTypeFontHandle {
|
impl Drop for FreeTypeFontHandle {
|
||||||
fn finalize(&self) {
|
fn finalize(&self) {
|
||||||
fail_unless!(self.face.is_not_null());
|
assert!(self.face.is_not_null());
|
||||||
if !FT_Done_Face(self.face).succeeded() {
|
if !FT_Done_Face(self.face).succeeded() {
|
||||||
fail!(~"FT_Done_Face failed");
|
fail!(~"FT_Done_Face failed");
|
||||||
}
|
}
|
||||||
|
@ -245,7 +241,7 @@ impl FontHandleMethods for FreeTypeFontHandle {
|
||||||
|
|
||||||
pub fn glyph_index(&self,
|
pub fn glyph_index(&self,
|
||||||
codepoint: char) -> Option<GlyphIndex> {
|
codepoint: char) -> Option<GlyphIndex> {
|
||||||
fail_unless!(self.face.is_not_null());
|
assert!(self.face.is_not_null());
|
||||||
let idx = FT_Get_Char_Index(self.face, codepoint as FT_ULong);
|
let idx = FT_Get_Char_Index(self.face, codepoint as FT_ULong);
|
||||||
return if idx != 0 as FT_UInt {
|
return if idx != 0 as FT_UInt {
|
||||||
Some(idx as GlyphIndex)
|
Some(idx as GlyphIndex)
|
||||||
|
@ -257,13 +253,13 @@ impl FontHandleMethods for FreeTypeFontHandle {
|
||||||
|
|
||||||
pub fn glyph_h_advance(&self,
|
pub fn glyph_h_advance(&self,
|
||||||
glyph: GlyphIndex) -> Option<FractionalPixel> {
|
glyph: GlyphIndex) -> Option<FractionalPixel> {
|
||||||
fail_unless!(self.face.is_not_null());
|
assert!(self.face.is_not_null());
|
||||||
let res = FT_Load_Glyph(self.face, glyph as FT_UInt, 0);
|
let res = FT_Load_Glyph(self.face, glyph as FT_UInt, 0);
|
||||||
if res.succeeded() {
|
if res.succeeded() {
|
||||||
unsafe {
|
unsafe {
|
||||||
let void_glyph = (*self.face).glyph;
|
let void_glyph = (*self.face).glyph;
|
||||||
let slot: FT_GlyphSlot = cast::transmute(void_glyph);
|
let slot: FT_GlyphSlot = cast::transmute(void_glyph);
|
||||||
fail_unless!(slot.is_not_null());
|
assert!(slot.is_not_null());
|
||||||
debug!("metrics: %?", (*slot).metrics);
|
debug!("metrics: %?", (*slot).metrics);
|
||||||
let advance = (*slot).metrics.horiAdvance;
|
let advance = (*slot).metrics.horiAdvance;
|
||||||
debug!("h_advance for %? is %?", glyph, advance);
|
debug!("h_advance for %? is %?", glyph, advance);
|
||||||
|
@ -324,7 +320,7 @@ pub impl FreeTypeFontHandle {
|
||||||
let x_scale = (metrics.x_ppem as float) / em_size as float;
|
let x_scale = (metrics.x_ppem as float) / em_size as float;
|
||||||
|
|
||||||
// If this isn't true then we're scaling one of the axes wrong
|
// If this isn't true then we're scaling one of the axes wrong
|
||||||
fail_unless!(metrics.x_ppem == metrics.y_ppem);
|
assert!(metrics.x_ppem == metrics.y_ppem);
|
||||||
|
|
||||||
return geometry::from_frac_px(value * x_scale);
|
return geometry::from_frac_px(value * x_scale);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ extern mod fontconfig;
|
||||||
|
|
||||||
use self::freetype::freetype::{
|
use self::freetype::freetype::{
|
||||||
FTErrorMethods,
|
FTErrorMethods,
|
||||||
FT_Error,
|
|
||||||
FT_Library,
|
FT_Library,
|
||||||
};
|
};
|
||||||
use self::freetype::freetype::bindgen::{
|
use self::freetype::freetype::bindgen::{
|
||||||
|
@ -25,7 +24,7 @@ struct FreeTypeLibraryHandle {
|
||||||
|
|
||||||
impl Drop for FreeTypeLibraryHandle {
|
impl Drop for FreeTypeLibraryHandle {
|
||||||
fn finalize(&self) {
|
fn finalize(&self) {
|
||||||
fail_unless!(self.ctx.is_not_null());
|
assert!(self.ctx.is_not_null());
|
||||||
FT_Done_FreeType(self.ctx);
|
FT_Done_FreeType(self.ctx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue