![]() | Logo by Alkaron (anonymous IP: 50.16.166.175) | |||||||||||||
| ||||||||||||||
Audio (311) Datatype (46) Demo (166) Development (467) Cross (37) Debug (8) Edit (3) Example (31) Game (19) Guitool (5) Ide (3) Install (0) Language (30) Library (236) Misc (24) Utility (71) Webtool (0) Document (18) Driver (78) Emulation (126) Game (723) Graphics (387) Library (58) Network (161) Office (43) Utility (625) Video (48) Total files: 3257 Full index file. Download Recent index file. Download
 Amigans.net  OpenAmiga  Aminet  UtilityBase  IntuitionBase  AmigaBounty
Support the site
|
-----------------------------------< SFont >------------------------------------
License: GPL or LGPL (at your choice)
Author: Karl Bartel <karlb()gmx.net>
WWW: http://www.linux-games.com/sfont/
Usage:
1. Load a font and place it in an SDL_Surface *. If your are using the
SDL_image library you can do this with Font = IMG_Load("filename");
2. Initialize the font by using InitFont(surface *Font);
3. Now you can use the font in you SDL program.
Please take a look at SFont.h to get info about the funtions.
For more usage examples, have a look at the included example files.
File Format:
The font file can be any type image file. The characters start with
ASCII symbol #33. They are seperated by pink(255,0,255) lines at the top
of the image. The space between these lines is the width of the caracter.
Just take a look at the font, and you'll be able to understand what I tried
to explain here.
Example for the font file format:
____ _____ _____ _____ <- This is the pink line at the top
# ##### ####
# # # # #
# # # # #
# # ##### #
##### # # #
# # # # #
# # ##### ####
|----|
Width of the character
|----------|
Part of the font surface that is beeing blitted
How to create Fonts:
The easiest way to create a new font is to use the GIMP's Logo function.
Use the following string as text (ASCII 33-127 with escape sequences and
spaces between the letters):
! " # % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? () A B C D E F
G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o
p q r s t u v w x y z { | } ~
In most other applications, you can just use the ASCII charakters without
escape sequences:
! " # % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? () A B C D E F
G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o
p q r s t u v w x y z { | } ~
Now you have to add the pink line above the font. You can either do this
manually, or let SFontMaker (http://nostatic.org/sfont/) do the work for
you. SFontMaker doesn't always generate the optimal soultion, but it's
usually good enough, and it provides a great starting point for manual
font tweaking.
ChangeLog:
2.03
Changes in C++ Wrapper by Lion Vollnhals:
fixed typo in "SFont_TextHeighT" call
fixed forgotten ',' in function Write
fixed parameter order in function Write
changed exception class to std::runtime_error which is derived from
std::exception because of
- standard conformance
- the additional functionality of class Exception isn't used in the code
- the code of class Exception uses non-C++ C code facilities, which are
type unsafe and potentially dangerous
- to remove the .cpp (object) file
added overloaded functions to support the standard std::string class
Also the class name has been changed to SFont and the Write method has been
renamed to write
2.02
Readded GPL/LGPL license choice (it got lost somehow when I put out the 2.0
version)
Changes by Florian Hufsky <fhufsky()phorus.at> (http://jnrdev.weed-crew.net)
:
Added a character list without escape sequences to the readme.
added link to SFontMaker
removed some confusing, outdated comments SFont.h
2.01
Fixed a compilation problem with older gcc versions (parse error before
cyan)
Added a SFont_Font cast before malloc, to make more compilers happy.
2.0
All changes in this version were done by Matthias Braun.
Yhis version breaks compatability in favor of a cleaner API!
Changes in detail:
- SDL.h is an external library so we should do #include <SDL.h>
(same goes for string.h)
- prefixed all functions with SFont_, this is good style to avoid
naming conflicts with other packages which might already have
functions with same name.
- Changed FontInit procedure: You now call InitFont and get a
SFont_FontInfo back. YOu have to call SFont_FreeFont later to
release the memory. Removed all the functions which draw the
default font. Keep it simple by only having 1 version which draws
a specified font. (User can easily create their own global font)
- changed text parameter in several functions from char* to const
char*, We're not changing the text anyway
- renamed PutString to Write
- renamed XCenteredString to WriteCenter
- added a SFont_TextHeight function
- removed input function from SFont, because:
a) it wasn't user friendly (no cursor keys, no begin/end key, ...)
b) it's of no use for most projects since the function totally
blocks your app. (for an ingame chat I want the game to
continue running, for a menu. I want the OK/Cancel buttons to
still work, ...)
c) it wasn't safe for buffer overflows (evil hacker creates a font
with width of 1 pixel and can input very long strings then...)
d) a lib is best when it only does 1 thing (in this case handling
fonts) and does this well. This keeps code small and bug free.
- declared internal function GetPixel static to avoid clashes with
other packages
- made the functions save to not crash on unknown characters
- I also converted the testapps to the new interface
- A C++ wrapper is included!
1.71
really fixed serious bug
1.7
removed one warning by adding #include <stdlib.h>
added license info at the top of sfont.c/.h
fixed serious bug (thanks Sulaiman)
1.6
added #ifndef SFONT_H etc to SFont.h to allow it to be
included multiple times with causing errors
To handle larger charsets (>127 chars) the type of
the 'text[i]' variable has been changed in
PutString2 and TextWidth2
1.5
fixed a bug in xcenteredstring2
added return on error in GetPixel in SoFont.cpp
SFont can be used either under the GPL or LGPL
unicode state is restored at the end of SFont_Input
added extern "C" defines for usage in C++ programs
Added lock and unlock for hardware surfaces
Added blinking cursor to SFont_Input
Added check for ASCII<33 in SFont_Input
TextWidth returned a too high value -> fixed
1.4
Added support for multiple fonts in one program
Add a missing "*" in the SFont.h file
Proper '
|
| Copyright (c) 2004-2013 by Björn Hagström All Rights Reserved Amiga OS and its logos are registered trademarks of Hyperion Entertainment |