diff --git a/src/rust-core-foundation b/src/rust-core-foundation index d316f05c008..22ff767266a 160000 --- a/src/rust-core-foundation +++ b/src/rust-core-foundation @@ -1 +1 @@ -Subproject commit d316f05c0081e9b208429cd19d84169e497e6191 +Subproject commit 22ff767266abfeeab508da705a4a75c23a77a291 diff --git a/src/rust-core-text b/src/rust-core-text index 9119482c915..03050d5d816 160000 --- a/src/rust-core-text +++ b/src/rust-core-text @@ -1 +1 @@ -Subproject commit 9119482c91527526b7d9aeae562d4ff48844722b +Subproject commit 03050d5d816462582c4506e1fb6f507b5c6653bc diff --git a/src/rust-io-surface b/src/rust-io-surface index ccef0dd637c..8602b259882 160000 --- a/src/rust-io-surface +++ b/src/rust-io-surface @@ -1 +1 @@ -Subproject commit ccef0dd637c45879f3b4d9bb0464b399fe14bd02 +Subproject commit 8602b259882444aa468a4b98d387cd9818940e14 diff --git a/src/servo/gfx/quartz/font_list.rs b/src/servo/gfx/quartz/font_list.rs index 7a323b821eb..eb429466be7 100644 --- a/src/servo/gfx/quartz/font_list.rs +++ b/src/servo/gfx/quartz/font_list.rs @@ -1,12 +1,37 @@ -pub struct QuartzFontListHandle { - ctx: (), +extern mod core_foundation; +extern mod core_text; - drop { } +use cf = core_foundation; +use cf::array::CFArray; +use ct = core_text; +use ct::font_collection::CTFontCollection; +use ct::font_descriptor::{CTFontDescriptor, CTFontDescriptorRef}; + +use gfx::font::FontFamily; + +use dvec::DVec; + +pub struct QuartzFontListHandle { + collection: CTFontCollection, } pub impl QuartzFontListHandle { - // this is a placeholder until CTFontCollection is bound here. static pub fn new() -> QuartzFontListHandle { - QuartzFontListHandle { ctx: () } + QuartzFontListHandle { collection: CTFontCollection::new() } + } + + fn get_available_families(_fctx: FontContext) -> ~[@FontFamily] { + // TODO: make a hashtable from family name to DVec + let descriptors : CFArray; + descriptors = self.collection.get_descriptors(); + for descriptors.each |desc: &CTFontDescriptor| { + // TODO: for each descriptor, make a FontEntry. + // TODO: append FontEntry to hashtable value + } + + let families: DVec<@FontFamily> = DVec(); + // TODO: iterate over (key,val) pairs and create FontFamily instances + + return move dvec::unwrap(move families); } } \ No newline at end of file