#
#
# Copyright (c) 1996, 2000, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

#
#	Japanese PostScript printer property file
#
font.num=16
#
serif=serif
timesroman=serif
sansserif=sansserif
helvetica=sansserif
monospaced=monospaced
courier=monospaced
dialog=sansserif
dialoginput=monospaced
#
serif.latin1.plain=Times-Roman
serif.latin1.italic=Times-Italic
serif.latin1.bolditalic=Times-BoldItalic
serif.latin1.bold=Times-Bold
#
sansserif.latin1.plain=Helvetica
sansserif.latin1.italic=Helvetica-Oblique
sansserif.latin1.bolditalic=Helvetica-BoldOblique
sansserif.latin1.bold=Helvetica-Bold
#
monospaced.latin1.plain=Courier
monospaced.latin1.italic=Courier-Oblique
monospaced.latin1.bolditalic=Courier-BoldOblique
monospaced.latin1.bold=Courier-Bold
#
serif.x11jis0208.plain=Ryumin-Light-H
serif.x11jis0208.italic=Ryumin-Light-H
serif.x11jis0208.bolditalic=Ryumin-Light-H
serif.x11jis0208.bold=Ryumin-Light-H
#
sansserif.x11jis0208.plain=GothicBBB-Medium-H
sansserif.x11jis0208.italic=GothicBBB-Medium-H
sansserif.x11jis0208.bolditalic=GothicBBB-Medium-H
sansserif.x11jis0208.bold=GothicBBB-Medium-H
#
monospaced.x11jis0208.plain=GothicBBB-Medium-H
monospaced.x11jis0208.italic=GothicBBB-Medium-H
monospaced.x11jis0208.bolditalic=GothicBBB-Medium-H
monospaced.x11jis0208.bold=GothicBBB-Medium-H
#
serif.x11jis0201.plain=Ryumin-Light.Hankaku
serif.x11jis0201.italic=Ryumin-Light.Hankaku
serif.x11jis0201.bolditalic=Ryumin-Light.Hankaku
serif.x11jis0201.bold=Ryumin-Light.Hankaku
#
sansserif.x11jis0201.plain=GothicBBB-Medium.Hankaku
sansserif.x11jis0201.italic=GothicBBB-Medium.Hankaku
sansserif.x11jis0201.bolditalic=GothicBBB-Medium.Hankaku
sansserif.x11jis0201.bold=GothicBBB-Medium.Hankaku
#
monospaced.x11jis0201.plain=GothicBBB-Medium.Hankaku
monospaced.x11jis0201.italic=GothicBBB-Medium.Hankaku
monospaced.x11jis0201.bolditalic=GothicBBB-Medium.Hankaku
monospaced.x11jis0201.bold=GothicBBB-Medium.Hankaku
#
Helvetica=0
Helvetica-Bold=1
Helvetica-Oblique=2
Helvetica-BoldOblique=3
Times-Roman=4
Times-Bold=5
Times-Italic=6
Times-BoldItalic=7
Courier=8
Courier-Bold=9
Courier-Oblique=10
Courier-BoldOblique=11
GothicBBB-Medium-H=12
Ryumin-Light-H=13
GothicBBB-Medium.Hankaku=14
Ryumin-Light.Hankaku=15
#
font.0=Helvetica ISOF
font.1=Helvetica-Bold ISOF
font.2=Helvetica-Oblique ISOF
font.3=Helvetica-BoldOblique ISOF
font.4=Times-Roman ISOF
font.5=Times-Bold ISOF
font.6=Times-Italic ISOF
font.7=Times-BoldItalic ISOF
font.8=Courier ISOF
font.9=Courier-Bold ISOF
font.10=Courier-Oblique ISOF
font.11=Courier-BoldOblique ISOF
font.12=GothicBBB-Medium-H findfont
font.13=Ryumin-Light-H findfont
font.14=GothicBBB-Medium.Hankaku findfont
font.15=Ryumin-Light.Hankaku findfont
#
