blank-canvas-0.6: HTML5 Canvas Graphics Library

Copyright(C) 2014-2015 The University of Kansas
LicenseBSD-style (see the file LICENSE)
MaintainerAndy Gill
StabilityBeta
PortabilityGHC
Safe HaskellNone
LanguageHaskell2010

Graphics.Blank.Font

Contents

Description

This module exposes an overloaded version of the font function that can accept a Font ADT argument. This may be of interest if you desire stronger type safety than Text-based fonts provide.

Note that this module's font function conflicts with font from Graphics.Blank. Make sure to hide font from Graphics.Blank if you use font from this module.

Synopsis

Overloaded font

font :: CanvasFont canvasFont => canvasFont -> Canvas () #

Sets the text context's font properties.

Examples

font (defFont "Gill Sans Extrabold") { fontSize = 40 # pt }
font (defFont sansSerif) { fontSize = 80 # percent }
font (defFont serif) {
    fontWeight = bold
  , fontStyle  = italic
  , fontSize   = large
}

class CanvasFont a where #

A data type that can represent a browser font.

Minimal complete definition

jsCanvasFont

Methods

jsCanvasFont :: a -> Builder #

Convert a value into a JavaScript string representing a font value.

font

data Font #

A CSS-style font data type.

Constructors

FontProperties

A font specified by its individual longhand properties.

CaptionFont

The font used for captioned controls (e.g., buttons, drop-downs, etc.)

IconFont

The font used to label icons.

MenuFont

The font used in menus (e.g., dropdown menus and menu lists).

MessageBoxFont

The font used in dialog boxes.

SmallCaptionFont

The font used for labeling small controls.

StatusBarFont

The font used in window status bars.

Instances

defFont :: [FontFamily] -> Font #

Creates a new font from the FontFamily list, using the Default instances for the other five longhand properties. If you only wish to change certain properties and leave the others alone, this provides a convenient mechanism for doing so:

(defFont ["Gill Sans Extrabold", sansSerif]) {
    fontStyle  = italic
  , fontSize   = 12 # px
  , lineHeight = 14 # px
}

caption :: Font #

Shorthand for CaptionFont.

icon :: Font #

Shorthand for IconFont.

menu :: Font #

Shorthand for MenuFont.

messageBox :: Font #

Shorthand for MessageBoxFont.

statusBar :: Font #

Shorthand for StatusBarFont.

font-style

data FontStyle #

Specifies if a Font is italic or oblique.

Constructors

NormalStyle

Selects a font classified as normal (default).

ItalicStyle

Selects a font that is labeled italic, or if one is not available, one labeled oblique.

ObliqueStyle

Selects a font that is labeled oblique.

Instances

Bounded FontStyle # 
Enum FontStyle # 
Eq FontStyle # 
Ord FontStyle # 
Read FontStyle # 
Show FontStyle # 
Ix FontStyle # 
IsString FontStyle # 
Default FontStyle # 

Methods

def :: FontStyle #

TextShow FontStyle # 
NormalProperty FontStyle # 

Methods

normal :: FontStyle #

italic :: FontStyle #

Shorthand for ItalicStyle.

oblique :: FontStyle #

Shorthand for ObliqueStyle.

font-variant

data FontVariant #

Specifies the face of a Font.

Constructors

NormalVariant

A normal font face (default).

SmallCapsVariant

A font face with small capital letters for lowercase characters.

Instances

Bounded FontVariant # 
Enum FontVariant # 
Eq FontVariant # 
Ord FontVariant # 
Read FontVariant # 
Show FontVariant # 
Ix FontVariant # 
IsString FontVariant # 
Default FontVariant # 

Methods

def :: FontVariant #

TextShow FontVariant # 
NormalProperty FontVariant # 

Methods

normal :: FontVariant #

font-weight

data FontWeight #

Specifies the boldness of a Font. Note that FontWeight is an instance of Num so that the nine numeric weights can be used directly. For example:

(defFont [sansSerif]) { fontWeight = 900 }

Attempting to use a numeric weight other than the nine given will result in a runtime error.

Instances

Bounded FontWeight # 
Enum FontWeight # 
Eq FontWeight # 
Num FontWeight # 
Ord FontWeight # 
Read FontWeight # 
Show FontWeight # 
Ix FontWeight # 
IsString FontWeight # 
Default FontWeight # 

Methods

def :: FontWeight #

TextShow FontWeight # 
NormalProperty FontWeight # 

Methods

normal :: FontWeight #

bold :: FontWeight #

Shorthand for BoldWeight.

bolder :: FontWeight #

Shorthand for BolderWeight.

font-size

data FontSize #

The desired height of Font glyphs.

Examples

xxSmall :: FontSize #

Shorthand for XXSmallSize.

xSmall :: FontSize #

Shorthand for XSmallSize.

small :: FontSize #

Shorthand for SmallSize.

medium :: FontSize #

Shorthand for MediumSize.

large :: FontSize #

Shorthand for LargeSize.

xLarge :: FontSize #

Shorthand for XLargeSize.

xxLarge :: FontSize #

Shorthand for XXLargeSize.

larger :: FontSize #

Shorthand for LargerSize.

smaller :: FontSize #

Shorthand for SmallerSize.

line-height

data LineHeight #

The height of the line boxes in a Font.

Examples

Instances

Eq LineHeight # 
Fractional LineHeight # 
Num LineHeight # 
Ord LineHeight # 
Read LineHeight # 
Show LineHeight # 
IsString LineHeight # 
Default LineHeight # 

Methods

def :: LineHeight #

TextShow LineHeight # 
PercentageProperty LineHeight # 
LengthProperty LineHeight # 
NormalProperty LineHeight # 

Methods

normal :: LineHeight #

font-family

data FontFamily #

The name of a Font family. Note that both FontFamily and [FontFamily] are instances of IsString, so it is possible to produce FontFamily values in several different ways. For example, these are all of type FontFamily:

FontFamilyName "Gill Sans Extrabold"
"Gill Sans Extrabold" :: FontFamily
serif
"serif" :: FontFamily

These are all of type [FontFamily]:

[FontFamilyName "Helvetica", serif]
["Helvetica", "serif"] :: [FontFamily]
"Helvetica, serif" :: [FontFamily]

Constructors

FontFamilyName Text

The name of a custom font family.

SerifFamily

A generic font family where glyphs have serifed endings.

SansSerifFamily

A generic font family where glyphs do not have serifed endings.

MonospaceFamily

A generic font family where all glyphs have the same fixed width.

CursiveFamily

A generic font family with cursive glyphs.

FantasyFamily

A generic font family where glyphs have decorative, playful representations.

serif :: FontFamily #

Shorthand for SerifFamily.

Normal values

class Default a => NormalProperty a where #

A convenient way to use the Default normal value for several Font longhand properties.

Methods

normal :: a #

The default value for a CSS property. For example, it can be used like this:

(defFont [sansSerif]) { lineHeight = normal }

Lengths

data Length #

Denotes CSS distance measurements, especially in the context of Fonts.

Constructors

Em

The height of the current font.

Fields

Ex

The height of the character x (x-height) in the current font.

Fields

Ch

The width of the character 0 in the current font.

Fields

Rem

The height of the font relative to the root element.

Fields

Vh

One percent of the height of the viewport.

Fields

Vw

One percent of the width of the viewport.

Fields

Vmin

One percent of the minimum of the viewport height and width.

Fields

Vmax

One percent of the maximum of the viewport height and width.

Fields

Px

One device pixel (dot) of the display.

Fields

Mm

One millimeter.

Fields

Cm

One centimeter (10 millimeters).

Fields

In

One inch (~2.54 centimeters).

Fields

Pt

One point (1/72 inches).

Fields

Pc

One pica (12 points).

Fields

class LengthProperty a where #

Designates CSS properties that can consist of a Length.

Minimal complete definition

fromLength

Methods

fromLength :: Length -> a #

em :: LengthProperty a => Double -> a #

Constructs a LengthProperty value with Em units.

ex :: LengthProperty a => Double -> a #

Constructs a LengthProperty value with Ex units.

ch :: LengthProperty a => Double -> a #

Constructs a LengthProperty value with Ch units.

rem_ :: LengthProperty a => Double -> a #

Constructs a LengthProperty value with Rem units. rem_ has an underscore to distinguish it from rem.

vh :: LengthProperty a => Double -> a #

Constructs a LengthProperty value with Vh units.

vw :: LengthProperty a => Double -> a #

Constructs a LengthProperty value with Vw units.

vmin :: LengthProperty a => Double -> a #

Constructs a LengthProperty value with Em units.

vmax :: LengthProperty a => Double -> a #

Constructs a LengthProperty value with Vmax units.

px :: LengthProperty a => Double -> a #

Constructs a LengthProperty value with Px units.

mm :: LengthProperty a => Double -> a #

Constructs a LengthProperty value with Mm units.

cm :: LengthProperty a => Double -> a #

Constructs a LengthProperty value with Cm units.

in_ :: LengthProperty a => Double -> a #

Constructs a LengthProperty value with Im units. This function has an underscore to distinguish it from the Haskell keyword.

pt :: LengthProperty a => Double -> a #

Constructs a LengthProperty value with Pt units.

pc :: LengthProperty a => Double -> a #

Constructs a LengthProperty value with Pc units.

Percentages

class PercentageProperty a where #

Designates CSS properties that can consist of a Percentage.

Minimal complete definition

percent

Methods

percent :: Percentage -> a #

Create a CSS property value from a Percentage.