Edit

kc3-lang/freetype/ChangeLog

Branch :

  • Show log

    Commit

  • Author : Werner Lemberg
    Date : 2001-06-18 10:35:00
    Hash : 00a2207f
    Message : Make the new error scheme source compatible with older FT versions by introducing another layer. * include/freetype/fterrors.h (FT_ERRORDEF_, FT_NOERRORDEF_): New macros. (FT_NOERRORDEF): Removed. * include/*/*err*.h: Use FT_ERRORDEF_ and FT_NOERRORDEF_.

  • ChangeLog
  • 2001-06-18  Werner Lemberg  <wl@gnu.org>
    
    	Make the new error scheme source compatible with older FT versions
    	by introducing another layer.
    
    	* include/freetype/fterrors.h (FT_ERRORDEF_, FT_NOERRORDEF_): New
    	macros.
    	(FT_NOERRORDEF): Removed.
    	* include/*/*err*.h: Use FT_ERRORDEF_ and FT_NOERRORDEF_.
    
    2001-06-16  Werner Lemberg  <wl@gnu.org>
    
    	* include/freetype/freetype.h (FT_ENC_TAG): New macro.
    	(FT_Encoding_): Use it.
    	* include/freetype/ftimage.h (FT_IMAGE_TAG): Define it
    	conditionally.
    
    2001-06-14  David Turner  <david@freetype.org>
    
    	Modified the TrueType interpreter to let it use the new
    	trigonometric functions provided in "fttrigon.h".  This gets rid of
    	some old 64-bit computation routines, as well as many warnings when
    	compiling the library with the "long long" 64-bit integer type.
    
    	* include/freetype/config/ftoption.h: Undefine
    	FT_CONFIG_OPTION_OLD_CALCS.
    	* include/freetype/internal/ftcalc.h: Rearrange use of
    	FT_CONFIG_OPTION_OLD_CALCS.
    	* src/base/ftcalc.c: Add declaration of FT_Int64 if
    	FT_CONFIG_OPTION_OLD_CALCS isn't defined.
    	* src/truetype/ttinterp.c: Use FT_TRIGONOMETRY_H.
    	(Norm): Add a special version if FT_CONFIG_OPTION_OLD_CALCS isn't
    	defined.
    	(Current_Ratio, Normalize): Simplify code.
    
    2001-06-11  Mike Owens  <MOwens@amtdatasouth.com>
    
    	* src/base/ftcalc.c (FT_MulDiv, FT_DivFix, FT_Sqrt64): Remove
    	compiler warnings.
    
    2001-06-08  Werner Lemberg  <wl@gnu.org>
    
    	* builds/unix/configure.in: Renamed to ...
    	* builds/unix/configure.ac: This to make sure that autoconf 2.50 is
    	needed.
    	Run `autoupdate' on it.
    	Increase `version_info' to 7:0:1.
    	* builds/unix/configure: Regenerated.
    
    2001-06-08  David Turner  <david@freetype.org>
    
    	* src/autohint/ahhint.c (ah_hinter_load_glyph): Fixed a bug that
    	corrupted transformed glyphs that were auto-hinted (the transform
    	was applied twice).
    
    	Fixed a bug that returned an invalid linear width for composite
    	TrueType glyphs.
    
    	* include/internal/tttypes.h (TT_Loader_): Two new elements `linear'
    	and `linear_def'.
    	* src/truetype/ttgload.c (load_truetype_glyph,
    	compute_glyph_metrics): Use it.
    
    	* include/fttypes.h (FT_ERROR_BASE): New macro.
    	* src/base/ftobjs.c (FT_Open_Face, FT_Render_Glyph_Internal): Use it
    	to make source code work with the new error scheme implemented by
    	Werner.
    	* src/base/ftoutln.c (FT_Outline_Render): Ditto.
    
    2001-06-07  Werner Lemberg  <wl@gnu.org>
    
    	Updating to libtool 1.4.0 and autoconf 2.50.
    
    	* builds/unix/ltconfig: Removed.
    	* builds/unix/ltmain.sh, builds/unix/configure.in,
    	builds/unix/aclocal.m4: Updated.
    	* builds/unix/configure: Regenerated.
    
    2001-06-06  Werner Lemberg  <wl@gnu.org>
    
    	Complete redesign of error codes.  Please check ftmoderr.h for more
    	details.
    
    	* include/freetype/internal/cfferrs.h,
    	include/freetype/internal/tterrors.h,
    	include/freetype/internal/t1errors.h: Removed.  Replaced with files
    	local to the module.  All extra error codes have been moved to
    	`fterrors.h'.
    
    	* src/sfnt/ttpost.h: Move error codes to `fterrors.h'.
    
    	* src/autohint/aherrors.h, src/cache/ftcerror.h, src/cff/cfferrs.h,
    	src/cid/ciderrs.h, src/pcf/pcferror.h, src/psaux/psauxerr.h,
    	src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h,
    	src/smooth/ftsmerrs.h, src/truetype/tterrors.h,
    	src/type1/t1errors.h, src/winfonts/fnterrs.h: New files defining the
    	error names for the module it belongs to.
    
    	* include/freetype/ftmoderr.h: New file, defining the module error
    	offsets.  Its structure is similar to `fterrors.h'.
    
    	* include/freetype/fterrors.h (FT_NOERRORDEF): New macro.
    	(FT_ERRORDEF): Redefined to use module error offsets.
    	All internal error codes are now public; unused error codes have
    	been removed, some are new.
    
    	* include/freetype/config/ftheader.h (FT_MODULE_ERRORS_H): New
    	macro.
    	* include/freetype/config/ftoption.h
    	(FT_CONFIG_OPTION_USE_MODULE_ERRORS): New macro.
    
    	All other source files have been updated to use the new error codes;
    	some already existing (internal) error codes local to a module have
    	been renamed to give them the same name as in the base module.
    
    	All make files have been updated to include the local error files.
    
    2001-06-06  Werner Lemberg  <wl@gnu.org>
    
    	* src/cid/cidtokens.h: Replaced with...
    	* src/cid/cidtoken.h: This file for 8+3 consistency.
    
    	* src/raster/ftraster.c: Use macros for header file names.
    
    	* src/include/freetype/tttables.h (TT_HoriHeader_, TT_VertHeader_):
    	Fix length of `Reserved' array.  Note that this isn't the real fix
    	since recent OpenType specs have introduced a `CaretOffset' field
    	instead of the first reserved byte.
    
    2001-05-29  Werner Lemberg  <wl@gnu.org>
    
    	* INSTALL: Minor fixes.
    
    
    	* Version 2.0.3 released.
    	=========================
    
    
    2001-05-29  David Turner  <david@freetype.org>
    
    	* INSTALL, docs/CHANGES: Updated.
    
    2001-05-25  David Turner  <david@freetype.org>
    
    	Moved several documents from the top-level to the "docs" directory.
    
    	* src/base/ftcalc.c (FT_DivFix): Small fix to return value.
    
    2001-05-16  David Turner  <david@freetype.org>
    
    	* src/truetype/ttgload.c (load_truetype_glyph): Fixed a bug in the
    	composite loader.  Spotted by Keith Packard.
    	* src/base/ftobjs.c (FT_GlyphLoader_Check_Points,
    	FT_GlyphLoader_Check_Subglyphs): Ditto.
    
    2001-05-14  David Turner  <david@freetype.org>
    
    	Fixed the incorrect blue zone computations, and improved the
    	composite support.  Note that these changes result in improved
    	rendering, while sometimes introducing their own artefacts.  This is
    	probably the last big change to the autohinter before the
    	introduction of a complete replacement.
    
    	* src/autohint/ahglobal.c (sort_values): Fix loop.
    	* src/autohint/ahglyph.c: Removed some obsolete code.
    	(ah_outline_compute_edges): Modify code to set the ah_edge_round
    	flag.
    	(ah_outline_compute_blue_edges): Add code to compute active blue
    	zones.
    	* src/autohint/ahhint.c (ah_hinter_glyph_load): Change load_flags
    	value.
    
    	* src/base/ftcalc.c (FT_DivFix): Fixed a bug in the 64-bit code that
    	created incorrect scale factors!
    	(FT_Round_Fix, FT_CeilFix, FT_FloorFix): Minor improvements.
    
    2001-05-12  Werner Lemberg  <wl@gnu.org>
    
    	* include/freetype/ftbbox.h: FTBBOX_H -> __FTBBOX_H__.
    	* include/freetype/fttrigon.h: __FT_TRIGONOMETRY_H__ ->
    	__FTTRIGON_H__.
    	Include FT_FREETYPE_H.
    	Beautified; added copyright.
    	* src/base/fttrigon.c: Beautified; added copyright.
    
    2001-05-11  David Turner  <david@freetype.org>
    
    	* src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c
    	(parse_font_matrix), src/type1/t1load.c (parse_font_matrix): Fixed
    	the incorrect EM size computation.
    
    	* include/freetype/fttrigon.h, src/base/fttrigon.c: New files,
    	adding trigonometric functions to the core API (using Cordic
    	algorithms).
    	* src/base/ftbase.c, src/base/Jamfile, src/base/rules.mk: Use them.
    
    	* builds/newline: New file.
    	* builds/top_level.mk, builds/detect.mk: Use it.  This fixes
    	problems with Make on Windows 2000, as well as problems when "make
    	distclean" is invoked on a non-Unix platform when there is no
    	"config.mk" in the current directory.
    
    	* builds/freetype.mk: Fixed a problem with object deletions under
    	Dos/Windows/OS/2 systems.
    
    	Added new directory to hold tools and test programs.
    
    	* docs/docmaker.py, docs/glnames.py: Moved to...
    	* src/tools/docmaker.py, src/tools/glnames.py: This place.
    	* src/tools/cordic.py: New file used to compute arctangent table
    	needed by fttrigon.c.
    	* src/tools/test_bbox.c, src/tools/test_trig.c: New test files.
    
    	* src/tools/docmaker.py: Improved the script to add the current date
    	at the footer of each web page (useful to distinguish between
    	versions).
    
    	* Jamfile: Fixed incorrect HDRMACRO argument.
    
    	* TODO: Removed the cubic arc bbox computation note, since it has been
    	fixed recently.
    	* src/base/ftbbox.c (test_cubic_zero): Renamed to...
    	(test_cubic_extrema): This function.  Use `UL' for unsigned long
    	constants.
    
    	* include/freetype/t1tables.h, include/freetype/config/ftoption.h:
    	Formatting.
    
    2001-05-10  David Turner  <david@freetype.org>
    
    	* src/base/ftobjs.c (FT_Open_Face): Fixed a small memory leak
    	which happened when trying to open 0-size font files!
    
    2001-05-09  Werner Lemberg  <wl@gnu.org>
    
    	* include/freetype/internal/ftcalc.h: Move declaration of
    	FT_SqrtFixed() out of `#ifdef FT_LONG64'.
    
    2001-05-08  Francesco Zappa Nardelli  <Francesco.Zappa.Nardelli@ens.fr>
    
    	* src/pcfdriver.c (PCF_Load_Glyph): Fixed incorrect bitmap width
    	computation.
    
    2001-05-08  David Turner  <david@freetype.org>
    
    	* docs/docmaker.py: Updated the DocMaker script in order to add
    	command line options (--output,--prefix,--title), fix the erroneous
    	line numbers reported during errors and warnings, and other
    	formatting issues.
    
    	* src/base/ftcalc.c (FT_MulDiv, FT_MulFix, FT_DivFix): Various tiny
    	fixes related to rounding in 64-bits routines and
    	pseudo-"optimizations".
    
    2001-04-27  David Turner  <david@freetype.org>
    
    	* src/base/ftbbox.c (BBox_Cubic_Check): Fixed the coefficient
    	normalization algorithm (invalid final bit position, and invalid
    	shift computation).
    
    2001-04-26  Werner Lemberg  <wl@gnu.org>
    
    	* builds/unix/config.guess, builds/unix/config.sub: Updated to
    	latest versions from gnu.org.
    
    	* builds/compiler/gcc-dev.mk: Add `-Wno-long-long' flag.
    
    	* include/freetype/internal/ftcalc.h: Define FT_SqrtFixed()
    	uncoditionally.
    	* src/base/ftbbox.c: Include FT_INTERNAL_CALC_H.
    	Fix compiler warnings.
    	* src/base/ftcalc.c: Fix (potential) compiler warnings.
    
    2001-04-26  David Turner  <david@freetype.org>
    
    	* src/base/ftcalc.c (FT_SqrtFixed): Corrected/optimized the 32-bit
    	fixed-point square root computation.  It is now used even with
    	64-bits integers, as it is _much_ faster than calling FT_Sqrt64 :-)
    
    	* src/base/ftbbox.c: Removed invalid "#include FT_BEZIER_H" line.
    
    2001-04-25  David Turner  <david@freetype.org>
    
    	* src/base/ftbbox.c (BBox_Cubic_Check): Rewrote function to use
    	direct computations with 16.16 values instead of sub-divisions.  It
    	is now slower, but proves a point :-)
    
    	* src/raster/ftraster.c, src/smooth/ftgrays.c, src/base/ftbbox.c:
    	Fixed the bezier stack depths.
    
    	* src/base/ftcalc.c (FT_MulFix): Minor rounding fix.
    
    	* builds/beos: Added BeOS-specific files to the old build system
    	(no changes were necessary to support BeOS in the Jamfile though).
    
    2001-04-20  David Turner  <david@freetype.org>
    
    	* ftconfig.h, ftoption.h: Updated "ftconfig.h" to detect 64-bit int
    	types on platforms where Autoconf is not available).  Also removed
    	FTCALC_USE_LONG_LONG and replaced it with
    	FT_CONFIG_OPTION_FORCE_INT64.
    
    	* builds/win32/freetype.dsp: Updated the Visual C++ project file.
    	Doesn't create a DLL yet.
    
    	* cffgload.c: Removed a compilation warning.
    
    2001-04-10  Tom Kacvinsky  <tjk@ams.org>
    
    	* t1load.c (parse_charstrings): Changed code for placing .notdef
    	glyph into slot 0 so that we no longer have a memory access
    	violation.
    
    	* t1load.h: In structure T1_Loader, added swap_table (of type
    	PS_Table) to facilitate placing the .notdef glyph into slot 0.
    
    2001-04-10  Francesco Zappa Nardelli  <francesco.zappa.nardelli@ens.fr>
    
    	* src/pcf/pcfdriver.c (PCF_Get_Char_Index): Fix return value.
    
    2001-04-09  Laurence Withers  <lwithers@lwithers.demon.co.uk>
    
    	* builds/dos/detect.mk: Add support for bash.
    
    2001-04-05  Werner Lemberg  <wl@gnu.org>
    
    	* builds/os2/*.mk: These files have been forgotten to update to
    	the structure of similar makefiles.
    	* builds/dos/*.mk: Ditto.
    	* builds/ansi/*.mk: Ditto.
    
    	* builds/win32/win32-def.mk (BUILD): Fix typo.
    
    	* builds/compiler/*.mk (CLEAN_LIBRARY): Don't use NO_OUTPUT.
    	This is already used in the link_*.mk files.
    
    2001-04-03  Werner Lemberg  <wl@gnu.org>
    
    	* src/*/Jamfile: Slight changes	to make files more cryptic.
    
    2001-04-03  Werner Lemberg  <wl@gnu.org>
    
    	* Jamfile, src/Jamfile, src/*/Jamfile: Formatted.  Slight changes
    	to give files identical structure.
    
    2001-04-02  Werner Lemberg  <wl@gnu.org>
    
    	* CHANGES: Reformatted, minor fixes.
    	* TODO: Updated.
    	* README: Formatting.
    	* include/freetype/freetype.h: Formatting.
    
    	* Jamfile: Fix typo.
    
    	* src/cff/cffparse.c: Move error code #defines to...
    	* include/freetype/internal/cfferrs.h: This file.
    	* src/cff/cffdrivr.c, src/cff/cffobjs.c, src/cff/cffload.c: Replaced
    	`FT_Err_*' with `CFF_Err_*'.
    	* src/cid/cidparse.c: Replaced `FT_Err_*' with `T1_Err_*'.
    	* src/psaux/psobjs.c, src/psaux/t1decode.c: Ditto.
    	* src/sfnt/sfobcs.c, src/sfnt/ttload.c: Replaced `FT_Err_*' with
    	`TT_Err_*'.
    	* src/truetype/ttgload.c, src/truetype/ttobjs.c: Ditto.
    	* src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1objs.c,
    	src/type1/t1parse.c: Replaced `FT_Err_*' with `T1_Err_*'.
    
    	* include/freetype/internal/cfferrs.h: Add
    	`CFF_Err_Unknown_File_Format'.
    	* include/freetype/internal/t1errors.h: Add
    	`T1_Err_Unknown_File_Format'.
    	* include/freetype/internal/tterrors.h: Add
    	`TT_Err_Unknown_File_Format'.
    
    	* src/cff/cffload.h: Add `cff_*_encoding' and `cff_*_charset'
    	references.
    	* src/psaux/psobjs.c: Include `FT_INTERNAL_TYPE1_ERRORS_H'.
    
    	* src/cff/cffobjs.c (CFF_Init_Face, CFF_Done_Face): Use
    	FT_LOCAL_DEF.
    	* src/cid/cidobjs.c (CID_Done_Driver): Ditto.
    	* src/trutype/ttobjs.c (TT_Init_Face, TT_Done_Face, TT_Init_Size):
    	Ditto.
    	* src/type1/t1objs.c (T1_Done_Driver): Ditto.
    	* src/pcf/pcfdriver.c (PCF_Done_Face): Ditto.
    	* src/pcf/pcf.h: Use FT_LOCAL for `PCF_Done_Face'.
    
    2001-04-02  Tom Kacvinsky  <tjk@ams.org>
    
    	* src/sfnt/ttload.c (TT_Load_Metrics): Fix an improper pointer
    	dereference.  Submitted by Herbert Duerr <duerr@sun.com>
    
    2001-03-26  Tom Kacvinsky  <tjk@ams.org>
    
    	* include/freetype/config/ftconfig.h: Changed hexadecimal
    	constants to use suffix U to avoid problems with HP-UX's c89
    	compiler.  Submitted by G.W. Lucas <glucas@sonalysts.com>
    
    2001-03-24  David Turner  <david.turner@freetype.org>
    
    	* Jamrules, Jamfile, src/Jamfile, src/*/Jamfile: Adding jamfiles to
    	the source tree.  See www.freetype.org/jam/index.html for details.
    
    
    	* Version 2.0.2 released.
    	=========================
    
    
    2001-03-20  Werner Lemberg  <wl@gnu.org>
    
    	* builds/win32/detekt.mk: Fix .PHONY target for Intel compiler.
    
    2001-03-20  David Turner  <david.turner@freetype.org>
    
    	* include/freetype/config/ftheader.h, include/freetype/ftsnames.h:
    	Renamed "ftnames.h" to "ftsnames.h", and FT_NAMES_H to
    	FT_SFNT_NAMES_H.
    
    	* docs/docmaker.py: Added generation of INDEX link in table of
    	contents.
    
    	* INSTALL, docs/BUILD: Updated documentation to indicate that the
    	compilation process has changed slightly (no more `src' required in
    	the include path).
    
    	* builds/*/*-def.mk: Changed the objects directory from "obj" to
    	"objs".
    
    	* include/freetype/config/ftheader.h: Removed obsolete macros like
    	FT_SOURCE_FILE, etc. and added cache-specific macro definitions that
    	were previously defined in <freetype/ftcache.h>.  Added comments to
    	be included in a new API Reference section.
    
    	* src/*/*: Removed the use of FT_SOURCE_FILE, etc.  Now, each
    	component needs to add its own directory to the include path at
    	compile time.  Modified all "rules.mk" and "descrip.mms"
    	accordingly.
    
    2001-03-20  Werner Lemberg  <wl@gnu.org>
    
    	* builds/unix/configure.in: Add $ft_version.
    	* builds/unix/freetype-config.in: Use it.
    	* builds/unix/configure: Updated.
    
    2001-03-19  Tom Kacvinsky  <tjk@ams.org>
    
    	* src/type1/t1load.c (parse_font_matrix): Assign the units per em
    	value an unsigned short value, first by shifting right 16 bits,
    	then by casting the results to FT_UShort.
    
    	* src/cff/cffparse.c (cff_parse_font_bbox): Assign the units per em
    	value an unsigned short value, first by shifting right 16 bits,
    	then by casting the results to FT_UShort.
    
    2001-03-17  David Turner   <david.turner@freetype.org>
    
    	* src/cid/cidobjs.c, src/cid/cidload.c, src/pcf/pcfread.c,
    	src/type1/t1load.c, src/type1/t1objs.c: Added a few casts to remove
    	compiler warnings in pedantic modes.
    
    	* include/config/ft2build.h, include/config/ftheader.h: The file
    	"ft2build.h" was renamed to "ftheader.h" to avoid conflicts with the
    	top-level <ft2build.h>.
    
    	* include/config/ftheader.h: Added new section describing the #include
    	macros.
    
    2001-03-17  Tom Kacvinsky  <tjk@ams.org>
    
    	* src/cff/cffparse.c (cff_parse_font_bbox): Obtain rounded FT_Fixed
    	values for the bounding box numbers.
    
    	* src/cff/cffobjs.c (CFF_Init_Face): When processing a CFF/CEF font,
    	set `root->ascender' (`root->descender') to the integer part of
    	`root->bbox.yMax' (`root->bbox.yMin', respectively).
    
    2001-03-16  Tom Kacvinsky  <tjk@ams.org>
    
    	* src/cff/cffdrivr.c (get_cff_glyph_name):  New function.  Used in
    	cff_get_interface to facilitate getting a glyph name for glyph index
    	via FT_Get_Glyph_Name().
    
    	(cff_get_interface): Added support for getting a glyph name via the
    	"glyph_name" module interface.  Uses the new function
    	get_cff_glyph_name().
    	Submitted by Sander van der Wal <svdwal@xs4all.nl>
    
    	* src/cff/cffobjs.c (CFF_Init_Face): Logical or the face flags with
    	FT_FACE_FLAG_GLYPH_NAMES only if FT_CONFIG_OPTION_NO_GLYPH_NAMES is
    	not defined.  This is to add support for getting a glyph name from a
    	glyph index via FT_Get_Glyph_Name().
    	Submitted by Sander van der Wal <svdwal@xs4all.nl>
    
    	* src/cff/cffgload.c (CFF_Parse_CharStrings): Added support for
    	deprecated operator "dotsection".
    	Submitted by Sander van der Wal <svdwal@xs4all.nl>
    
    2001-03-12  Werner Lemberg  <wl@gnu.org>
    
    	* src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Fix error
    	messages.
    
    	* INSTALL, docs/BUILD: We need GNU make 3.78.1 or newer.
    
    2001-03-12  Tom Kacvinsky  <tjk@ams.org>
    
    	* include/freetype/internal/psaux.h:  Changed the lenIV member of
    	the T1_Decoder_ struct to be an FT_Int instead of an FT_UInt.
    
    	* src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings):  Adjust
    	for lenIV seed bytes at the start of a decrypted subroutine.
    
    	* src/cid/cidload.c (cid_read_subrs): Decrypt subroutines only
    	if lenIV >= 0.
    
    	* src/cid/cidgload.c (cid_load_glyph): Decrypt charstrings only
    	if lenIV >= 0.
    
    2001-03-11  Werner Lemberg  <wl@gnu.org>
    
    	* TODO: Updated.
    
    	* src/pcf/pcfread.c: Put READ_Fields() always in a conditional to
    	avoid compiler warnings.
    
    2001-03-10  Tom Kacvinsky  <tjk@ams.org>
    
    	* TODO: New file.
    
    	* include/freetype/freetype.h: Added prototypes and notes for
    	three new functions: FT_RoundFix, FT_CeilFix, and FT_FloorFix.
    	* src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_FloorFix): Added
    	implementation code.
    
    	* src/cid/cidobjs.c (CID_Init_Face): Use calculated units_per_EM,
    	and if that is not available, default to 1000 units per EM.  Changed
    	assignment code for ascender and descender values.
    	* src/cid/cidload.c (parse_font_matrix): Added units_per_EM
    	processing.
    	(parse_font_bbox): Changed to use FT_Fixed number handling.
    
    	* src/type1/t1objs.c (T1_Init_Face): Changed the assignment code
    	for ascender, descender, and max_advance_width.
    	* src/type1/t1load.c (parse_font_bbox): Changed to use FT_Fixed
    	number handling.
    
    2001-03-10  Henrik Grubbstr