Skip to content
Snippets Groups Projects
FXFont.rb 12.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • module Fox
      #
      # Font style
      #
      class FXFontDesc
    
        # Typeface name, such as "helvetica" [String]
        attr_accessor :face
        
        # Font size in decipoints [Integer]
        attr_accessor :size
        
        # Font weight, such as +FONTWEIGHT_NORMAL+ or +FONTWEIGHT_BOLD+ [Integer].
        # See FXFont documentation for the complete list of font weight values.
        attr_accessor :weight
      
        # Font slant, such as +FONTSLANT_REGULAR+ or +FONTSLANT_ITALIC+ [Integer].
        # See FXFont documentation for the complete list of font slant values.
        attr_accessor :slant
        
        # Character set encoding, such as <tt>FONTENCODING_ISO_8859_1</tt> or <tt>FONTENCODING_LATIN1</tt> [Integer].
        # See FXFont documentation for the complete list of character set encoding values.
        attr_accessor :encoding
        
        # Font set width, such as +FONTSETWIDTH_CONDENSED+ or +FONTSETWIDTH_WIDE+ [Integer].
        # See FXFont documentation for the complete list of font set width values.
        attr_accessor :setwidth
        
        # Flags [Integer]
        attr_accessor :flags
    
        #
        # Constructor
        #
        def initialize ; end
      end
    
      #
      # Font class
      #
      # === Font pitch hints
      #
      # +Fixed+::		Fixed pitch, mono-spaced
      # +Variable+::	Variable pitch, proportional spacing
      #
      # === Font style hints
      #
      # +Decorative+::	Fancy fonts
      # +Modern+::		Monospace typewriter font
      # +Roman+::		Variable width times-like font, serif
      # +Script+::		Script or cursive
      # +Swiss+::		Helvetica/swiss type font, sans-serif
      # +System+::		System font
      # +X11+::		Raw X11 font string
      # +Scalable+::	Scalable fonts
      # +Polymorphic+::	Polymorphic fonts, e.g. parametric weight, slant, etc.
      # +Rotatable+::	Rotatable fonts
      #
      # === Font slant options
      #
      # +ReverseOblique+::	Reversed oblique
      # +ReverseItalic+::	Reversed italic
      # +Straight+::	Straight, not slanted
      # +Italic+::		Italics
      # +Oblique+::		Oblique slant
      #
      # === Font weight options
      #
      # +Thin+::		Thin
      # +ExtraLight+::	Extra light
      # +Light+::		Light
      # +Normal+::		Normal or regular weight
      # +Medium+::		Medium bold face
      # +DemiBold+::	Demi bold face
      # +Bold+::		Bold face
      # +ExtraBold+::	Extra
      # +Black+::		Black
      #
      # === Condensed or expanded options
      #
      # +UltraCondensed+::	Ultra condensed printing
      # +ExtraCondensed+::	Extra condensed
      # +Condensed+::	Condensed
      # +SemiCondensed+::	Semi-condensed
      # +NonExpanded+::	Regular printing
      # +SemiExpanded+::	Semi expanded
      # +Expanded+:;	Expanded
      # +ExtraExpanded+::	Extra expanded
      # +UltraExpanded+::	Ultra expanded
      #
      # === Font character set encoding
      #
      # <tt>FONTENCODING_DEFAULT</tt>::			Don't care character encoding
      # <tt>FONTENCODING_ISO_8859_1</tt>::		West European (Latin1)
      # <tt>FONTENCODING_ISO_8859_2</tt>::		Central and East European (Latin2)
      # <tt>FONTENCODING_ISO_8859_3</tt>::		Esperanto (Latin3)
      # <tt>FONTENCODING_ISO_8859_4</tt>::		ISO-8859-4 character encoding
      # <tt>FONTENCODING_ISO_8859_5</tt>:: 		Cyrillic (almost obsolete)
      # <tt>FONTENCODING_ISO_8859_6</tt>::		Arabic
      # <tt>FONTENCODING_ISO_8859_7</tt>::		Greek
      # <tt>FONTENCODING_ISO_8859_8</tt>::		Hebrew
      # <tt>FONTENCODING_ISO_8859_9</tt>::		Turkish (Latin5)
      # <tt>FONTENCODING_ISO_8859_10</tt>::		ISO-8859-10 character encoding
      # <tt>FONTENCODING_ISO_8859_11</tt>::		Thai
      # <tt>FONTENCODING_ISO_8859_13</tt>::		Baltic
      # <tt>FONTENCODING_ISO_8859_14</tt>::		ISO-8859-14 character encoding
      # <tt>FONTENCODING_ISO_8859_15</tt>::		ISO-8859-15 character encoding
      # <tt>FONTENCODING_ISO_8859_16</tt>::		ISO-8859-16 character encoding
      # <tt>FONTENCODING_KOI8</tt>::		KOI-8 character encoding
      # <tt>FONTENCODING_KOI8_R</tt>::		Russian
      # <tt>FONTENCODING_KOI8_U</tt>::		Ukrainian
      # <tt>FONTENCODING_KOI8_UNIFIED</tt>::	x
      #
      # <tt>FONTENCODING_CP437</tt>::			IBM-PC code page
      # <tt>FONTENCODING_CP850</tt>::			IBM-PC Multilingual
      # <tt>FONTENCODING_CP851</tt>::			IBM-PC Greek
      # <tt>FONTENCODING_CP852</tt>::			IBM-PC Latin2
      # <tt>FONTENCODING_CP855</tt>::			IBM-PC Cyrillic
      # <tt>FONTENCODING_CP856</tt>::			IBM-PC Hebrew
      # <tt>FONTENCODING_CP857</tt>::			IBM-PC Turkish
      # <tt>FONTENCODING_CP860</tt>::			IBM-PC Portugese
      # <tt>FONTENCODING_CP861</tt>::			IBM-PC Iceland
      # <tt>FONTENCODING_CP862</tt>::			IBM-PC Israel
      # <tt>FONTENCODING_CP863</tt>::			IBM-PC Canadian/French
      # <tt>FONTENCODING_CP864</tt>::			IBM-PC Arabic
      # <tt>FONTENCODING_CP865</tt>::			IBM-PC Nordic
      # <tt>FONTENCODING_CP866</tt>::			IBM-PC Cyrillic #2
      # <tt>FONTENCODING_CP869</tt>::			IBM-PC Greek #2
      # <tt>FONTENCODING_CP870</tt>::			Latin-2 Multilingual
      #
      # <tt>FONTENCODING_CP1250</tt>::			Windows Central European
      # <tt>FONTENCODING_CP1251</tt>::			Windows Russian
      # <tt>FONTENCODING_CP1252</tt>::			Windows Latin1
      # <tt>FONTENCODING_CP1253</tt>::			Windows Greek
      # <tt>FONTENCODING_CP1254</tt>::			Windows Turkish
      # <tt>FONTENCODING_CP1255</tt>::			Windows Hebrew
      # <tt>FONTENCODING_CP1256</tt>::			Windows Arabic
      # <tt>FONTENCODING_CP1257</tt>::			Windows Baltic
      # <tt>FONTENCODING_CP1258</tt>::			Windows Vietnam
      # <tt>FONTENCODING_CP874</tt>::			Windows Thai
      #
      # <tt>FONTENCODING_UNICODE</tt>::			Unicode
      #
      # <tt>FONTENCODING_LATIN1</tt>::		same as <tt>FONTENCODING_ISO_8859_1</tt>, Latin 1 (West European)
      # <tt>FONTENCODING_LATIN2</tt>::		same as <tt>FONTENCODING_ISO_8859_2</tt>, Latin 2 (East European) 
      # <tt>FONTENCODING_LATIN3</tt>::		same as <tt>FONTENCODING_ISO_8859_3</tt>, Latin 3 (South European) 
      # <tt>FONTENCODING_LATIN4</tt>::		same as <tt>FONTENCODING_ISO_8859_4</tt>, Latin 4 (North European) 
      # <tt>FONTENCODING_LATIN5</tt>::		same as <tt>FONTENCODING_ISO_8859_9</tt>, Latin 5 (Turkish) 
      # <tt>FONTENCODING_LATIN6</tt>::		same as <tt>FONTENCODING_ISO_8859_10</tt>, Latin 6 (Nordic) 
      # <tt>FONTENCODING_LATIN7</tt>::		same as <tt>FONTENCODING_ISO_8859_13</tt>, Latin 7 (Baltic Rim)
      # <tt>FONTENCODING_LATIN8</tt>::		same as <tt>FONTENCODING_ISO_8859_14</tt>, Latin 8 (Celtic)
      # <tt>FONTENCODING_LATIN9</tt>::		same as <tt>FONTENCODING_ISO_8859_15</tt>, Latin 9 (a.k.a. Latin 0)
      # <tt>FONTENCODING_LATIN10</tt>::		same as <tt>FONTENCODING_ISO_8859_16</tt>, Latin 10
      # <tt>FONTENCODING_USASCII</tt>::		same as <tt>FONTENCODING_ISO_8859_1</tt>, Latin 1
      # <tt>FONTENCODING_WESTEUROPE</tt>::		same as <tt>FONTENCODING_ISO_8859_1</tt>, Latin 1 (West European) 
      # <tt>FONTENCODING_EASTEUROPE</tt>::		same as <tt>FONTENCODING_ISO_8859_2</tt>, Latin 2 (East European) 
      # <tt>FONTENCODING_SOUTHEUROPE</tt>::		same as <tt>FONTENCODING_ISO_8859_3</tt>, Latin 3 (South European) 
      # <tt>FONTENCODING_NORTHEUROPE</tt>::		same as <tt>FONTENCODING_ISO_8859_4</tt>, Latin 4 (North European) 
      # <tt>FONTENCODING_CYRILLIC</tt>::		same as <tt>FONTENCODING_ISO_8859_5</tt>, Cyrillic
      # <tt>FONTENCODING_RUSSIAN</tt>::		same as <tt>FONTENCODING_KOI8</tt>, Cyrillic
      # <tt>FONTENCODING_ARABIC</tt>::		same as <tt>FONTENCODING_ISO_8859_6</tt>, Arabic
      # <tt>FONTENCODING_GREEK</tt>::		same as <tt>FONTENCODING_ISO_8859_7</tt>, Greek
      # <tt>FONTENCODING_HEBREW</tt>::		same as <tt>FONTENCODING_ISO_8859_8</tt>, Hebrew
      # <tt>FONTENCODING_TURKISH</tt>::		same as <tt>FONTENCODING_ISO_8859_9</tt>, Latin 5 (Turkish) 
      # <tt>FONTENCODING_NORDIC</tt>::		same as <tt>FONTENCODING_ISO_8859_10</tt>, Latin 6 (Nordic) 
      # <tt>FONTENCODING_THAI</tt>::		same as <tt>FONTENCODING_ISO_8859_11</tt>, Thai
      # <tt>FONTENCODING_BALTIC</tt>::		same as <tt>FONTENCODING_ISO_8859_13</tt>, Latin 7 (Baltic Rim)
      # <tt>FONTENCODING_CELTIC</tt>::		same as <tt>FONTENCODING_ISO_8859_14, Latin 8 (Celtic)
      #
      class FXFont < FXId
    
        # Family part of name [String]
        attr_reader :family
        
        # Foundry part of name [String]
        attr_reader :foundry
    
        # Font family name [String]
        attr_reader	:name
    
        # Actual font family name [String]
        attr_reader :actualName
    
        # Size in decipoints [Integer]
        attr_reader	:size
        
        # Actual size in deci-points [Integer]
        attr_reader :actualSize
    
        # Font weight [Integer]
        attr_reader	:weight
        
        # Actual font weight [Integer]
        attr_reader :actualWeight
    
        # Slant [Integer]
        attr_reader	:slant
        
        # Actual slant [Integer]
        attr_reader :actualSlant
    
        # Encoding [Integer]
        attr_reader	:encoding
        
        # Actual encoding [Integer]
        attr_reader :actualEncoding
    
        # Set width [Integer]
        attr_reader	:setWidth
    
        # Actual set width [Integer]
        attr_reader :actualSetWidth
    
        # Hints [Integer]
        attr_reader	:hints
    
        # Font description [FXFontDesc]
        attr_accessor :fontDesc
        
        # Font angle [Integer]
        attr_accessor :angle
        
        # Font description as a string [String]
        attr_accessor :font.
    
        # First character glyph in font [Integer]
        attr_reader	:minChar
    
        # Last character glyph in font [Integer]
        attr_reader	:maxChar
    
        # Width of widest character in font [Integer]
        attr_reader	:fontWidth
    
        # Height of tallest character in font [Integer]
        attr_reader	:fontHeight
    
        # Ascent from baseline [Integer]
        attr_reader	:fontAscent
    
        # Descent from baseline [Integer]
        attr_reader	:fontDescent
    
        # Font leading [Integer]
        attr_reader	:fontLeading
    
        # Font line spacing [Integer]
        attr_reader	:fontSpacing
    
        #
        # Return an FXFont instance, initialized from a font description.
        #
        # ==== Parameters:
        #
        # +a+::		an application instance [FXApp]
        # +fontDesc+::	a font description [FXFontDesc]
        #
        def initialize(a, fontDesc) # :yields: theFont
        end
      
        #
        # Return an FXFont instance initialized with the given face name, size in
        # points (pixels), weight, slant, character set encoding, set width, and hints.
        # The font name may be comprised of a family name and optional foundry name enclosed in 
        # square brackets, for example, "helvetica [bitstream]".
        #
        # ==== Parameters:
        #
        # +a+::		an application instance [FXApp]
        # +face+::		font face name [String]
        # +size+::		requested font size, in points [Integer]
        # +weight+::	requested font weight [Integer]
        # +encoding+::	requested font encoding [Integer]
        # +setWidth+::	requested font set width [Integer]
        # +hints+::		font construction hints for font matching algorithm [Integer]
        #
        def initialize(a, face, size, weight=FXFont::Normal, slant=Font::Straight, encoding=FONTENCODING_DEFAULT, setWidth=FXFont::NonExpanded, hints=0) # :yields: theFont
        end
      
        #
        #  Construct a font with given font description of the form:
        # 
        #      fontname [ "[" foundry "]" ] ["," size ["," weight ["," slant ["," setwidth ["," encoding ["," hints]]]]]]
        # 
        #  For example:
        # 
        #      "helvetica [bitstream],120,bold,italic,normal,iso8859-1,0"
        # 
        #  Typically, at least the font name, and size must be given for
        #  normal font matching.  As a special case, raw X11 fonts can also be
        #  passed, for example:
        # 
        #      "9x15bold"
        # 
        # Note: use of the raw X11 fonts is stronly discouraged.
        #
        def initialize(a, string) # :yields: theFont
        end
    
        #
        # Change the font to the specified font description string.
        # Returns +true+ on success.
        #
        def setFont(string); end
    
        #
        # Return the font description as a string suitable for
        # parsing with #setFont, see above.
        #
        def getFont(); end
    
        #
        # Return +true+ if font is monospaced.
        #
        def fontMono? ; end
      
        #
        # Return +true+ if font has glyph for _ch_. Here, _ch_ can either be an
        # ordinal value, e.g.
        #
        #     aFont.hasChar?(?a)
        #
        # or a string of length one (i.e. a single character), e.g.
        #
        #     aFont.hasChar?('a')
        #
        def hasChar?(ch) ; end
    
        #
        # Returns the left-side bearing (the distance from the origin to the leftmost pixel in the character) for _ch_.
        #
        def leftBearing(ch) ; end
      
        #
        # Returns the right-side bearing (the distance from the origin to the rightmost pixel in the character) for _ch_.
        #
        def rightBearing(ch) ; end
      
        #
        # Calculate width of single wide character _ch_ in this font
        #
        def getCharWidth(ch); end
    
        #
        # Returns the width of given _text_ in this font.
        #
        def getTextWidth(text) ; end
      
        #
        # Returns the height of given _text_ in this font.
        #
        def getTextHeight(text) ; end
      
        #
        # List all fonts matching hints. Returns an array of FXFontDesc objects.
        #
        def FXFont.listFonts(face, weight=0, slant=0, setWidth=0, encoding=0, hints=0)
        end
      end
    end