stp − Ghostscript device driver for ESC/P, ESC/P2, RTL/PCL
Options for the stp driver are given in normal Ghostscript manner. The resolution of the image calculated by Ghostscript is not bound to the resolution of the printer output. It is for example possible to specify −r360 to gs and print the output in 1440x720 dpi (see below for driver parameter). The result is a somewhat faster operation of the driver.
The device name is "stp" (−sDEVICE=stp)
The driver will not permit use of invalid settings.
The options for this driver are very complex. We strongly recommend use of a printer management system such as Foomatic rather than configuring a spooler manually with this driver. The driver name used by Foomatic is "gimp−print".
Overview for
the IJS Driver:
Most options for the ijsgimpprint driver are similar to
those for the stp driver. The major difference is that most
of the Gimp−Print specific options are bundled
together into a single option that is passed in as a special
−sIjsParams parameter, and the normal
Ghostscript −s and −d flags,
indicating whether an option is a string or a number, are
not used in this special parameter.
The device name is "ijs" (−sDEVICE=ijs). In addition, the location of the driver program must be specified. This will typically be /usr/bin/ijsgimpprint; the parameter in this case is −sIjsServer=/usr/bin/ijsgimpprint .
Also, −dIjsUseOutputFD should be specified whenever output from Ghostscript will go to stdout or into a pipe. It may be specified in all other cases, with only a slight performance degradation.
The −sIjsParams parameter contains a single string containing a comma−separated list of sub−options:
−sIjsParams=Option1=Value1,Option2=Value2
and so forth.
The options for this driver are very complex. We strongly recommend use of a printer management system such as Foomatic rather than configuring a spooler manually with this driver. The driver name used by Foomatic is "gimp−print−ijs".
Printer
Model Selection (Option STP: −sModel=name , IJS:
−sDeviceManufacturer=vendor
−sDeviceModel=name):
This option must be supplied. There is no default. The IJS
driver requires the vendor (it’s part of the
protocol), but the ijsgimpprint driver ignores it. It should
be CANON, EPSON, LEXMARK, or HEWLETT−PACKARD. The
value of the −sDeviceModel parameter is the
same as the value of the −sModel parameter in
the stp driver.
Most or all of the Epson Stylus printers are fully functional. The others vary. In particular, all of the listed Epson Stylus Photo printers print in full 6−color photo mode; most of the others do not. The color output has also been better tuned for Epson Stylus printers than for others.
Print
Resolution Selection (Option STP: −sQuality= , IJS:
−sIjsParams=Quality=):
The meaning of this is model−specific. Two names are
listed for each resolution; the first (short) name is the
value that must be passed to −sQuality, and the
second (long) name is descriptive. Each printer has its own
default value; for most printers, this is a reasonable 300
or 360 DPI resolution.
For Epson Stylus printers:
Within each specified resolution, the quality is generally listed from worst to best (and generally higher quality means lower speed). For example, 360 DPI Unidirectional is usually better than 360 DPI. Characteristics of specific models and individual printers may affect the orderings to some degree; on many printers, with certain papers, unidirectional printing will improve quality substantially more than using an otherwise better quality printing mode.
The difference between different quality settings lies in the number of passes made over each line. High and Highest quality settings perform more passes, printing fewer dots with each pass over the same line and using different nozzles for each pass. This reduces banding effects, but requires more time.
Interleave modes use algorithms within the printer to generate the sequence of rows printed. These algorithms generally only work well at low printing resolutions. Many printers do not support this kind of printing at resolutions of 720 DPI and above, and some printers that do actually print just one row (using just one nozzle per color) at a time. While this particular use will produce extremely high quality (no banding whatsoever, normally), it is extremely slow and may eventually damage the print head due to ink pooling. All printers that we are aware of have no such trouble at 360 DPI.
We generally recommend the following resolutions for the following purposes:
360x90 |
360x120
Fast economy draft output on plain paper (output will be very banded and not very dark).
180 |
Economy draft output on plain paper (output will not be very dark). |
360x180
360x240
Draft output on plain paper (output will not be solidly black); economy draft output on good quality inkjet paper.
360 |
Standard quality output on plain paper (output will be solidly black); draft output on good quality inkjet paper. |
720x360
High quality output on plain paper; standard output on good quality inkjet paper.
720 |
Maximum quality on plain paper; high quality on good inkjet paper; proofs on photo−quality paper. On many printers, there will be little difference between this and 720x360 on plain paper. |
1440x720
High quality on photo paper; use 1440x720 Highest Quality to reduce microbanding if needed. While this will work on plain paper, it usually offers little improvement over 720 DPI.
2880x720
Highest quality on photo paper. While this may yield slightly improved quality, it will generally not be markedly superior to 1440x720 Highest Quality, except on the Stylus Color 980 and Stylus C70 and C80, where it may yield a noticeable improvement. It takes as long to print as 1440x720 highest quality, but twice as long to generate the output.
1440x1440
An unsupported mode that offers higher quality than 2880x720 for certain types of images on very high quality paper. It does not appear to offer any advantage on smooth tones, but fine detail (particularly vertical, and to a lesser extent near−horizontal) it shows noticeable improvement. It takes as long to print as 2880x720. 1440x1440 highest quality takes twice as long to print.
2880x1440
An unsupported mode that may offer higher quality than 2880x720 for certain types of images on very high quality paper. Experiments conducted thus far demonstrate little if any improvement over 1440x1440. It takes twice as long to print as 2880x720 or 1440x1440, and as long to print as 1440x1440 highest quality.
The following resolutions are supported on printers other than the Stylus Pro (5000, 5500, 7000, 7500, 9000, 9500, and 10000) printers. Resolutions for those printers are listed in a later section. Please see the notes at the end of this section.
(*) |
This resolution is the default on all printers supporting this setting. | ||
(1) |
Works on printers that have a basic vertical spacing of 1/90". This includes the Stylus Color, Stylus Color 440, 460, 600, 640, 660, 670, and 1500, and Stylus Photo, Stylus Photo 700, 720, and EX. | ||
(2) |
Works on most printers that have a basic vertical spacing of 1/90, 1/180, or 1/360 inch. This includes Stylus Color, Stylus Color 440, 460, 600, 640, 660, 670, 800, 850, 900, 980, 1500, 1520, 3000, and Stylus Photo, Stylus Photo 700, 720 and EX. | ||
(3) |
Works on Stylus C70, C80, and C82; and Stylus Photo 950, 960, 2100, and 2200. | ||
(4) |
Works on older printers with dot spacing of 1/120 inch. This includes the Stylus Color Pro, Pro XL, 400, and 500. | ||
(5) |
Works on newer printers with dot spacing of 1/120 inch. This includes the Stylus C20, C40, C41, C42, C60, C61, and C62; the Stylus Color 480, 580, 680, 740, 760, 777, 860, 880, 83, and 1160, and the Stylus Photo 750, 780, 785, 790, 810, 820, 830, 870, 875, 890, 895, 915, 925, 1270, 1280, 1290, and 2000P, and the Stylus Scan 2000 and 2500. | ||
(6) |
Works on all printers that do not support variable drop sizes. This includes the Stylus Color, Stylus Color 400, 440, 460, 500, 600, 640, 660, 800, 850, 1500, 1520, and 3000, Stylus Color Pro, Stylus Color Pro XL, and Stylus Photo, Stylus Photo 700, and EX. | ||
(7) |
Works on all printers that do support variable drop sizes. This includes all supported Epson Stylus printers except for those listed in note (6). | ||
(8) |
Recommended only on processors slower than 200 MHz, the system is heavily loaded with a faster processor, or if problems are experienced at 720x360. | ||
(9) |
Works on all supported printers except for Stylus Color, Stylus Color Pro, Stylus Color Pro XL, Stylus Color 1500, 1520, and 3000. | ||
(10) |
On printers that do not support variable drop size (see note (4)), this will print as fast as 360 DPI, and faster than 360 DPI High Quality. It will take twice as long to generate output, which may be important on a heavily loaded system or a processor slower than 200 MHz. | ||
(11) |
Works on some older printers, including the Stylus Color, Stylus Color 400, 500, 600, 800, 850, 1500, 1520, and 3000, Stylus Color Pro, and Stylus Color Pro XL. Not recommended except for the Stylus Color, Stylus Color 1500, 1520, and 3000. | ||
(12) |
Works on Stylus Color 600, 800, 850, 1520, and 3000. Not recommended unless other 1440x720 modes do not work. | ||
(13) |
Works on all printers that support 1440x720 DPI. This includes all supported printers except for the Stylus Color, Stylus Color Pro, Pro XL, 400, 440, 460, 480, 500, and 1500, and Stylus Photo. In addition, this may not work correctly on Stylus Color 1520 and Stylus Color 3000. | ||
(14) |
This is identical to 1440 x 720 Highest Quality (1440x720hq) on the Stylus Color 900. | ||
(15) |
Works on all printers that support 2880x720 DPI. This includes the Stylus C60, C61, C62, C70, C80, and C82, the Stylus Color 680, 777, 880, 83, and 980, and Stylus Photo 780, 790, 810, 820, 830, 890, 915, 925, 950, 960, 1280, and 1290. This resolution is offered on the Stylus Photo 2100 and 2200, but may not work correctly. | ||
(16) |
Works on Epson Stylus Photo 830, 925, 950, 960, 2100, 2200; Stylus C61, C62, C70, C80, C82 ; Stylus Pro 7600 and 9600. This resolution is not supported by Epson on the C70 and C80, but it works correctly on at least some such printers. | ||
(17) |
These resolutions print at particularly high speed on the Epson Stylus Photo 950, 960, 2100, and 2200 when printing in Four Color Standard or Three Color Composite modes, or when printing in monochrome or grayscale with any ink type other than Two Level Grayscale, Seven Color Photo, or Quadtone. |
The Stylus Pro printers (Stylus Pro 5000, 5500, 7000, 7500, 7600, 9000, 9500, 9600, and 10000) support additional interleave modes known as Full Overlap (FOL), Four Pass, and FOL2. The Stylus Pro 5500, 7500, 7600, 9500, 9600, and 10000 additionally have a mode called MW2. These modes can only be used at certain resolutions. Stylus Pro printers support the following resolutions:
In addition, the Stylus Pro 7600 and 9600 printers support the following resolutions:
For PCL printers (including Hewlett−Packard and Lexmark 4076):
Note: the higher resolutions of newer PCL printers using "Photo−Ret" are not yet supported.
For Lexmark printers other than the 4076:
For Canon printers:
1200 DPI printers (BJC 7000, BJC 7100, BJC 8500):
1440 DPI printers
(BJC 30, BJC 50, BJC 55, BJC 80, BJC 85, BJC 210, BJC 240, BJC 250, BJC 1000, BJC 2000, BJC 3000, BJC 4300, BJC 4400, BJC 6000, BJC 6100, BJC 6200, BJC 6500, BJC 8200, S400, S450, S800, S4500):
Ink
Types
This is printer type specific. The option names are case
sensitive. The option names are case sensitive. Two names
are listed for each resolution; the first (short) name is
the value that must be passed to −sInkType, and
the second (long) name is descriptive. Not all ink types are
supported on all printers.
Option STP: −sInkType=inktype Option IJS: −sIjsParams=InkType=inktype
For Epson and Lexmark (other than the 4076) printers:
Six color printers can print using four color inks or all six colors. Six color mode is recommended for photographs. Four color mode may be useful when printing text with embedded graphics to reduce ink consumption, or to print higher quality with Ordered, Fast, or Very Fast dithering (see below).
The Composite modes use only color inks (no black) to produce all colors and black. These ink types are rarely useful, but on certain types of paper they may produce a smoother image than that produced by mixing black ink in. The Epson Stylus Color 1500 cannot mix black ink with colored inks; on this printer, Three Color Composite must be used.
For Canon printers:
For PCL (Hewlett−Packard and Lexmark 4076) color printers:
Black and white PCL printers (laser printers, in particular) do not allow any value to be specified for the ink type.
Media
Types
This is printer type specific. The option names are case
sensitive. Two names are listed for each resolution; the
first (short) name is the value that must be passed to
−sMediaType, and the second (long) name is
descriptive.
Option STP: −sMediaType=mediatype Option IJS: −sIjsParams=MediaType=mediatype
For Epson and Lexmark (other than the 4076) inkjet printers:
We have found that glossy photo papers not specifically designed for Epson printers generally perform poorly in Epson printers. The ink tends to pool on the paper, causing muddy shadows and possibly leaving ink on the printer rollers. Use of the highest quality printing modes (1440x720 highest quality and 2880x720 unidirectional) produces the best result on such papers, probably because printing is slower and there is more time for the ink to dry.
For Canon printers:
For PCL (Hewlett−Packard and Lexmark 4076) inkjet printers:
PCL laser printers do not allow specification of any media type.
Media
Sources
This is printer type specific. The option names are case
sensitive.
Option STP: −sInputSlot=mediasource Option IJS: −sIjsParams=MediaSource=mediasource
Epson printers without a roll feed mechanism should not have this option set.
For Epson printers with a roll feed mechanism without a paper cutter (Stylus Photo 785, 825, 870, 875, 890, 895, 915, 1200, 1270, 1280, 1290):
For Epson printers with a roll feed mechanism with a paper cutter (Stylus Photo 925, 950, 960, 2100, 2200):
NOTE: The −sInputSlot=RollCutPage does not work with the STP driver, only with the IJS driver.
For Epson Stylus Pro printers without a roll feed mechanism (Stylus Pro 5000, 5500):
For Epson Stylus Pro printers with a roll feed mechanism (Stylus Pro 7000, 7500, 7600, 9000, 9500, 9600, 10000, 10600):
For Canon printers:
For PCL (Hewlett−Packard and Lexmark 4076) printers. Different printers allow different choices out of this set.
For Lexmark printers other than the 4076:
Media
Sizes
This is printer−specific; we cannot list the correct
values for each printer here. The option names are
case−sensitive. Two names are listed for each
resolution; the first (short) name is the value that must be
passed to −sPAPERSIZE, and the second (long)
name is descriptive. This option does not set GhostScript up
to use a paper size other than the default; it only tells
the driver to set up the printer for a different paper size.
The default paper size is
Option STP: −sPAPERSIZE=papersize Option IJS: −sPAPERSIZE=papersize (for known Ghostscript paper sizes) or
−dDEVICEWIDTHPOINTS=x −dDEVICEHEIGHTPOINTS=y
where x and y are the width and height of the paper respectively, in points (1/72")
* Common English paper sizes
* Common photographic paper sizes
International Paper Sizes (mostly taken from BS4000:1968)
* A
series: Paper and boards, trimmed sizes
*
* A sizes are in the ratio 1 : sqrt(2). A0 has a
total area
* of 1 square metre. Everything is rounded to the nearest
* millimetre. Thus, A0 is 841mm x 1189mm. Every other A
* size is obtained by doubling or halving another A
size.
* Stock sizes
for normal trims.
* Allowance for trim is 3 millimetres.
* Stock sizes for bled work or extra trims.
* "B" series: Posters, wall charts and similar items.
* "C" series: Envelopes or folders suitable for A size stationery.
* US CAD standard paper sizes
* Foolscap
* Sizes for
book production
* The BPIF and the Publishers Association jointly recommend
ten
* standard metric sizes for case−bound titles as
follows:
* Paperback sizes in common usage
* Miscellaneous sizes
Color
Balancing Values: (min,max,default)
All of the values below are interpreted as being relative to
norms for a particular printer established through testing,
not absolute values of any kind.
The STP parameter is specified. The IJS parameter is created by removing the −d and beginning the options list with −sIjsParams. Thus
−dCyan=xxx
becomes
−sIjsParams=Cyan=xxx
These three options allow specification of the cyan, magenta, and yellow levels independently, for rebalancing the levels. Normally, these should be adjusted to yield neutral gray, but they can be used for other effects.
Adjust the brightness of the image. 0.0 gives a fully black image; 2.0 gives a fully white image. Values greater than 1 will result in black not being solid and highlights turning white; values less than 1 will result in white not being perfectly clear and shadows turning black.
Adjust the contrast of the image. 0.0 gives a solid gray for the entire image, the exact gray depending upon the brightness chosen.
Adjust the gamma of the image, over and above the printer−specific correction. Gamma less than 1.0 will result in a darker image; gamma greater than 1.0 will result in a lighter image. Unlike brightness, gamma adjustment does not change the endpoints; it merely changes the shape of the input−>output curve.
Adjust the amount of ink deposited on the paper. If you’ve chosen the correct paper type and you’re getting ink bleeding through the paper or puddling, try reducing the density to the lowest value you can while still achieving solid black. If you’re not getting solid black, even with the contrast and brightness at 1.0, try increasing the density.
All of the printers supported here actually need less than 100% ink density in most cases, so the actual density is something other than the nominal density setting. The effective density setting cannot go above 100%, so if a value specified will result in an excessively high density level, it will be silently limited to 1.0.
Adjust the brilliance of colors. 0.0 results in pure grayscale; using this with −dColor=1 is one way of getting grayscale (see below under −dColor for a full discussion). Saturation of less than 1.0 results in more muted colors; saturation of greater than 1.0 results in more vibrant colors. Very high saturation often results in very strange effects, including posterization and banding that might not be expected. For normal purposes, the saturation should generally be less than 1.5.
Dithering
Algorithms:
The option names are case sensitive. Two names are listed
for each resolution; the first (short) name is the value
that must be passed to −sDither, and the second (long)
name is descriptive.
Option STP:
−sDither=algorithm
Option IJS: −sIjsParams=Dither=algorithm
For highest quality, we recommend use of Adaptive Hybrid dithering. For continuous tone images, Ordered works just as well and is somewhat faster. Ordered dithering yields noticeably inferior results with text and intricate line art, particularly at high resolutions.
EvenTone dithering is a relatively new screening technology developed by Raph Levien. It offers superior smoothness in highlights and midtones, and increased accuracy in shadows, resulting in significantly improved results overall. The version of EvenTone dithering that we are using is enhanced with some additional improvements we have made. It currently only operates with CMYK (4, 6, or 7 color output) with RGB input, and should be considered experimental. Note that it is patented (see US patent 5917614), but it is licensed for use with GPL software. See http://www.levien.com/patents.html for more information.
Fast dithering, which is a simplified version of ordered dither, is significantly faster, but color accuracy is worse, particularly on six color printers and printer using variable dot sizes. On simple four color printers, the quality is quite reasonable, although color printing will show more speckling in dark tones than Ordered dither. For single dot size printers, printing grayscale, this algorithm yields almost identical results to Ordered with some performance improvement. On three color printers, the results should be very similar to Ordered.
Very Fast is even faster than Fast, with even more loss of quality. It shows even more speckling, and the output is heavily patterned. On laser printers, and possibly on certain kinds of text and line art, Very Fast dithering may actually yield the best quality.
Error diffusion algorithms (Hybrid Floyd−Steinberg is such an algorithm) perform very well at high densities, and are capable of rendering very fine detail well, but they tend to exhibit artifacts in the form of waves or worms of dots which results in noticeable texturing in pale areas. Furthermore, pale areas immediately adjacent to white take a while to build up sufficient error to print at all. This is sometimes called tearing Its use is not recommended.
Output
Type
STP:
IJS:
Choose color vs. grayscale output. Color output is the default. Choosing −dColor=0 results in only black ink (no color ink) being used, which is faster and usually results in the most accurate grayscale, but at the expense of smoothness. If you want composite color (using a mixture of color and black inks to produce gray), use −dColor=1 and −dSaturation=0.0 (see −dSaturation above).
In addition, using −dColor=0 uses luminance (perceived brightness) of red, green, and blue to choose output levels. Blue of a given intensity is perceived to be much darker than red, which in turn appears darker than green. −dColor=1 and −dSaturation=0.0 does not use luminance.
−dColor=2 prints only black and white (thresholding). This option always uses Fast dithering unless you specify Very Fast.
CMYK output may be used with the IJS driver only. It is useful if you’re printing a CMYK graphic and want explicit control over the inks. Generally it yields inferior quality, as Gimp−Print has good algorithms for converting RGB (screen) into CMYK (inks) that take into account paper type, ink type, and other variables. In CMYK mode, the brightness, contrast, and saturation controls do not function.
Image type
(to optimize the dither):
STP:
IJS:
Select the image type most representative of what’s being printed.
Option 0 is the fastest. It generates strong, but not particularly accurate, colors. There may be some fairly sharp color transitions in this mode.
Option 1 generates more accurate colors, but is slower.
Option 2 generates the most accurate colors, but is considerably slower.
Note that any of the modes may be used with either color or black & white output. If black and white output is requested, but a color mode used, composite color will be printed. This generally offers smoother tone, but less purity of gray or black, than pure black ink. Furthermore, it is possible to tune the color of the gray (to achieve warmer or cooler effects) using the color controls in this fashion.
Specifying a lower GhostScript resolution (with −r) results in faster color conversion. For example, if you print at 1440x720 DPI, but specify a Ghostscript resolution of 360 DPI (with −r360), output will be significantly faster and there will be much less difference in performance between the three image type options.
EXAMPLES:
Note that a lot of these options are used for demonstration;
generally adjusting the density is a bad idea!
Example 1 (print charts to file, using A4 paper, color, 360 dpi):
gs
−sDEVICE=stp −sModel=escp2−ex
−dDensity=1.6 −dGamma=1.5 −dSaturation=0.9
\
−dBrightness=.4 −dImageType=1
−sPAPERSIZE=a4 \
−sOutputFile=itsyourchoice.prn foo.ps
gs
−sDEVICE=ijs −sIjsServer=/usr/bin/ijsgimpprint \
−sDeviceManufacturer=EPSON
−sDeviceModel=escp2−ex −sPAPERSIZE=a4 \
−sOutputFile=itsyourchoice.prn \
−sIjsParams=Density=1.6,Gamma=1.5,Saturation=0.9,Brightness=0.4,ImageType=1
\
foo.ps
Example 2 (print color photograph to /dev/lp0 at maximum quality):
gs −q
−dSAFER −dNOPAUSE −sDEVICE=stp
−sModel=escp2−870 −dDensity=0.8 \
−r1440x720 −sQuality=1440x720hq
−sMediaType=GlossyPhoto \
−dImageType=2 −sOutputFile=/dev/lp0 foo.ps
gs
−sDEVICE=ijs −sIjsServer=/usr/bin/ijsgimpprint \
−sDeviceManufacturer=EPSON
−sDeviceModel=escp2−870 \
−sOutputFile=/dev/lp0 \
−sIjsParams=’Quality=1440x720hq,MediaType=GlossyPhoto,Density=0.8,ImageType=2’
\
foo.ps
Example 3 (print pure black text to stdout)
gs −q
−dSAFER −dNOPAUSE −sDEVICE=stp
−sModel=escp2−660 −dDensity=0.8
−r720 \
−sQuality=720sw −dColor=2
−sOutputFile=− foo.ps
gs
−sDEVICE=ijs −sIjsServer=/usr/bin/ijsgimpprint \
−sDeviceManufacturer=EPSON
−sDeviceModel=escp2−660 −dIjsUseOutputFD \
−sProcessColorModel=DeviceGray −dBitsPerSample=1
−sOutputFile=− \
−sIjsParams=’Quality=720sw,Density=0.8’
foo.ps
gs(1), gs-pcl3(1).
Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.
Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.
Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.
Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.
The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.
Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.
Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.
Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.