2012-08-04 3 views

답변

2

짧은 답변 : 긴 대답 this gist

에서 그것을 얻을 : 다음은이 작업을 수행하는 작은 스칼라 프로그램입니다. 이 답변을 주셔서 너무 감사 요점을

import com.google.gson.GsonBuilder 
import org.apache.commons.io.IOUtils 
import java.io.FileInputStream 
import collection.mutable 
import collection.JavaConverters._ 

object Webfonts { 
    private val basePath = new java.io.File("/path/to/googlefontdirectory") 

    def main(args: Array[String]) { 
    val fontDetailsList = mutable.ListBuffer.empty[FontDetails] 
    val categoryMap = mutable.Map.empty[String, java.util.List[String]] 

    val gson = new GsonBuilder().setPrettyPrinting().create() 
    for (font <- FontsList.fonts) { 
     fontDetailsList += gson.fromJson(IOUtils.toString(new FileInputStream(new java.io.File(basePath, font))), classOf[FontDetails]) 
    } 

    fontDetailsList.filter(_.subsets.contains("latin")).foreach((font) => { 
     val a = categoryMap.getOrElseUpdate(font.category, new java.util.ArrayList[String]()) 
     a.add(font.name) 
    }) 

    val json = gson.toJson(categoryMap.asJava) 
    println(json) 
    } 


    case class FontDetails(name: String, license: String, category: String, size: Int, subsets: Array[String]) { 
    override def toString = category + " : " + name 
    } 

} 

object FontsList { 
    val fonts = Array(
    "./apache/aclonica/METADATA.json", 
    "./apache/calligraffitti/METADATA.json", 
    "./apache/cherrycreamsoda/METADATA.json", 
    "./ufl/ubuntucondensed/METADATA.json", 
    "./ufl/ubuntumono/METADATA.json" 

) 
} 

당신은 https://gist.github.com/4085914

+0

에서 전체 FontsList를 얻을 수 있습니다 :이 사용하고 아래의 프로그램에서 basePath을 변경 당신은 http://code.google.com/p/googlefontdirectory에서 googlefontdirectory 프로젝트를 체크 아웃해야합니다 + json은 엄청난 도움이됩니다. –

+0

이 요점 파일은 현재 생후 10 개월이므로 구식 일 것입니다. 또한 Google hg 저장소의 글꼴과 메타 데이터는 Google API의 출시 된 글꼴보다 앞서 나올 수 있습니다. API에서 제공된 폰트 패밀리를 필터링해야하지만, 카테고리와 서브 세트가 항상 올바른 것은 아닙니다 (API가 hg repo 뒤에 있음). 나는 메타 데이터를 직접 추출 할 때 이것을 발견했다 (https://github.com/academe/GoogleFontMetadata). 거기에는 서면으로 발표되지 않은 부분 집합이있다. – Jason