2

特定のカテゴリ(sans、sans-serif)のすべてのフォントを識別できるようにしたいと思います。これは、GoogleのWebフォントビューアからは可能ですが、APIを介しては機能しないようです。

https://developers.google.com/webfonts/docs/developer_api#Details

4

2 に答える 2

3

簡単な答えこの要点からそれを得る

より長い答え:これを行うための小さなscalaプログラムがあります。これを使用して以下のプログラムでを変更するには、 http: //code.google.com/p/googlefontdirectoryからgooglefontdirectoryプロジェクトをチェックアウトする必要があります。basePath

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"

  )
}

完全なFontsListは、 https: //gist.github.com/4085914で入手できます。

于 2012-11-16T10:06:00.903 に答える
2

APIがこれをサポートしているとは思いません。APIから返されたJSONファイルを確認すると、この情報は表示されません。Google Web Fontグループでも同様の質問がありましたが、回答はありませんでした。

https://groups.google.com/forum/?fromgroups=#!topic/googlefontdirectory-discuss/U2cROKUjRqM

于 2012-08-29T20:30:55.410 に答える