text:
I don't read a lot of middle grade books now that I teach high school, but there are certain authors I always read. Kate Messner is one of those authors. A few weeks ago I finally got a chance to read her newest novel Hide and Seek. As usual, it did not disappoint.
The second in her series, this mystery is perfect for middle grade readers. José, Anna, and Henry are junior members of the secret Silver Jaguar Society, sworn to protect the world's most important artifacts. In this adventure, they discover that the society's treasured Jaguar Cup, which members have whispered about for generations, has been stolen and replaced with a counterfeit. The kids and their families soon rush to the rain forests of Costa Rica in search of the real Jaguar Cup. The adults try to keep the kids out of the mess, but of course that never works. When they are left on their own at an eco-resort, they begin their own investigation. Middle grade readers will find themselves on the edge of their seats as they race alongside José, Anna, and Henry, in search of the cup before it disappears forever!
Highly recommended for the fast-paced mystery, the realistic middle-school characters,and the amazing setting.
But here's the thing. Kate is going to get me in trouble because after reading Hide and Seek I need to visit Costa Rica. In fact, the night I finished the book I emailed Kate and asked her where she stayed on her research trip and for any other advice she might have. That's how good the setting is. That's how magical Kate's words are- she brings the rain forest to life. Plus, she shared a bit about her research trip here, here, and here!
I'm still looking into a trip to Costa Rica and I hope it happens in the future. If it does, I will thank Kate Messner for introducing me to the amazing eco-lodge profiled in Hide and Seek!
Filed under: environmental, reviews | Tagged: Arenal Volcano, Central America | 2 Comments »


text:
Richard Alley has been a prominent figure in climate change debate. Again we were told to expect a fire-and-brimstone presentation with warnings about tipping canoes. His presentation was lively, but, like Schrag, Alley expressed great caution about what could legitimately be expected from paleoclimate studies and made some very interesting remarks about the disconnect between what policy-makers wanted and what academics could provide.
Here are some striking observations from Alley, which I'll flesh out below. Alley said that the records mostly stop before the present warming, adding that there is "no coordinated effort to update paleoclimate data, to obtain a clear picture of the last decades in the context of the millennium". Alley said that paleoclimatologists usually collect records for other reasons and "policy-makers are trying to squeeze the process". He said that the "community could do better if that was a high priority", later saying that "we have a tremendous ability to do better". He said that we "had not really integrated them [polar cores] in a coherent way", because "this was "not the highest priority of the scientific community". He thought that updating records was merely "operational" and not something that you could ask a Ph.D. to do.
Alley's at Penn State; he noted that he had been a coauthor and supervisor for panellist Cuffey (but did not mention that co-presenter Mann was also at Penn State.) Alley led off by saying that the paleoclimate network was not designed to answer questions about climate change. He said that he liked glaciers, especially when they "behaved badly", that glacier increase(decrease) mostly reflected summer temperature. An increase of 1 deg C was roughly correlated with 25% mass loss; while it also led to increased precipitation of about 7%. The order of magnitures were close enough that some anomalous individual results existed. Later he qualified these percentages by saying that they applied to glaciers with land termini, while glaciers with ocean termini were less sensitive.
He presented the Oerlemanns graphic (now being commonly used in spaghetti graphs) going up to 1990, together with updates after 1990 from Dyurgerov and Meier [2005], a "wonderful" report in the "grey literature", "grey literature" here apparently being Occasional Paper 58 of the Institute for Alpine and Arctic Research. (SM: In passing, it is remarkable that a detailed and systematic presentation should be regarded as "grey" literature while articles that are, at best, extended abstracts in Nature and Science are not. Dyurgerov and Meier is online — see link below.)
Alley said that glaciers were not starving and glacier recession was not due to lack of precipitation. He showed a temperature reconstruction for Greenland from Cuffey et al. 1995, in which Alley said that high-frequency isotope data was combined with borehole data to yield composite. (SM: An editorial note: the graphic posted up by Alley did not show that 20th century temperatures had passed above MWP levels, although Alley did not mention this and none of the panellists asked him about it.) Alley also showed a melt layer stack, but I did not pick up the provenance.
A further editorial aside: data is archived at WDCP for Alley [2000] here , which provides as an additional reference Cuffey and Clow [1997]. (I've consulted Cuffey and Clow [1997] but haven't consulted Cuffey et al 1995 yet). Here's the latter portion of Cuffey's reconstruction as archived, which at least also shows the same feature of medieval-modern levels as the graphic presented by Alley. (Dates in BP converted to 1950. GISP results come much later than shown in the data archived at this file, perhaps due to the smoothing by Alley [2000]. The data in Alley [2000] goes back to 43000BP, the main purpose of the reconstruction being to illustrate the difference between LGM and Holocene results and the MWP illustration here is incidental to the original article.) Obviously it shows a pronounced MWP peaking at the exact point of Viking exploration. Cuffey's reconstruction is not used in any Hockey Team reconstructions. I'm going to post up some remarkably different temperature histories from Greenland, showing the curious spaghetti that may exist in even one locale.
Alley said that the records mostly stop before the present warming, adding that there is "no coordinated effort to update paleoclimate data, to obtain a clear picture of the last decades in the context of the millennium". He said that the "community could do better if that was a high priority".
Alley then showed 6 àŽàⳏ18 isotope series from Thompson's tropical glaciers: Dasuopu, Dunde and Guliya in the Himalayas; Huascaran, Sajama and Quelccaya in South America). He acknowledged that the isotopic picture is "complicated" and then showed a composite "interpreting" the àŽàⳏ18 as temperature.
The àŽàⳏ18 values in tropical glaciers are seasonally reversed from polar glaciers, adding a huge and arguably insuperable problem to the extraction of temperature data from tropical àŽàⳏ18 ice cores. In polar glaciers, summer àŽàⳏ18 values are high and winter àŽàⳏ18 values are low; thus, while changing sources are an important issue in the interpretation of polar isotopes, one is beginning with a plausible temperature interpretation of the isotopes. In tropical glaciers, the situation is reversed. Summer àŽàⳏ18 values are low (coming from monsoon rainout both in the Himalayas and Andes) and winter àŽàⳏ18 values are high. In looking at the past, high àŽàⳏ18 spikes at (say) Dasuopu are interpreted even by Lonnie Thompson as associated with monsoon failures (thus reduced summer precipitation). The association of tropical ice core àŽàⳏ18 with precipitation is called the "amount effect". Despite this, Lonnie Thompson argues that increases of annual àŽàⳏ18 values in the 20th century should this be interpreted as evidence of increased temperature; however, other specialists have, in my opinion, convincingly argued that it is due to changes in precipitation. Alley did not disclose this problem to the panel when he presented the àŽàⳏ18 information and no one on the panel asked Alley about the "amount effect" in tropical precipitation. (BTW the ice core information used by Alley had not been archived in 2004 and was archived by Thompson at the direction of Climatic Change only after a great deal of correspondence and formal complaints from me.)
Alley proceeded to discuss meltwater penetration at the top of Quelccaya (Coriocalis). He mentioned that there was plant material dated 5000 years old. Thus "some indication that we had moved out of the range of natural variability". Again I'd like to pin down the information on these organics; Thompson's use of radiocarbon dates of organics in glacier dating at Kilimanjaro seems highly questionable to me.
Alley then discussed some of the practical issues related to collection of proxies in a policy context, saying that "we have a tremendous ability to do better". He said that we "had not really integrated them [polar cores] in a coherent way", because "this was "not the highest priority of the scientific community". Alley said that paleoclimatologists usually collect records for other reasons and "policy-makers are trying to squeeze the process", throwing in a complaint about funding. He asked: "What science department would hire someone to update an ice core record? You couldn't tell a Ph.D to do this. It was more akin to operations." He said that "the proxies are not designed to answer the questions…We know we can do better… If you want to do it right, it has to be operational".
Cuffey: Can you tell the average temperature 1000 years ago to within 0.5 degree C? Alley: No.
Alley's coments about updating raise lots of questions and issues, which I'll come back to. If I were a policy-maker funding paleoclimatologists, I'd sure be surprised by some of Alley's answers.
Some references:
Dyurgerov, Mark., Meier, Mark Frederick . Glaciers and the changing earth system : a 2004 snapshot /by, 1925 "INSTAAR/OP-5
Click to access OP58%5Fdyurgerov%5Fmeier.pdf
Alley, R.B. 2000. The Younger Dryas cold interval as viewed from central Greenland. Quaternary Science Reviews 19:213-226.
Cuffey, K.M., and G.D. Clow. 1997. Temperature, accumulation, and ice sheet elevation in central Greenland through the last deglacial transition. Journal of Geophysical Research 102:26383-26396.

subset: commoncrawl


text:
About Kathy Ireland™ Carpet
We've chosen 90 magnificent colors and 4 Essential Styles. Each color has been carefully named to take the fear out of purchasing carpeting.
Color choices can intimidate and overwhelm, but we've developed Shades of
America so that it's so simple, you can't make a mistake. You'll know with
confidence, which paint, accents and fabrics complete your décor. Displayed in
groups of varying hues, Shades of America allows you to make choices easily.
From Citrus Green to Bordeaux, Evening Blue or Cinnamon Toast, we've brought you the colors that create feelings of warmth, family, comfort and great style. These wonderful designs are practical too. Life is messy but with our exclusive R2X treatment you won't worry about every day accidents.


text:
Epperson loses bid to block inquiry
ROCKFORD — Police Chief Chet Epperson will face his accusers Aug. 25 in a hearing into the chief's conduct in October during a welfare check at the home of the president of the Rockford chapter of the NAACP.
The Rockford Board of Fire and Police Commissioners on Monday cleared the way for the hearing by denying a request by Epperson to dismiss a complaint against the chief filed by the police officers union. Epperson had argued that the police board had no authority over the chief of police and no legal authority to consider the union's complaint.
That argument was rejected by commissioners.
Officers on Oct. 30 were dispatched to Lloyd Johnston's home in response to a reported domestic disturbance. Dan Cain, the attorney representing the union, said although the report turned out to be false, the officers dispatched to the scene had a responsibility to check on the well-being of Johnston's adult son.
When Johnston called Epperson, Cain said, the chief interfered with and endangered officers with his comments. The officers heard the conversation over a speakerphone.
"Without even checking with his officers, the chief basically said, 'Don't let them in. Tell them to go away.' And so the chief of police obstructed the necessary and lawful actions of his own officers," Cain said. "If any other police officer in the city of Rockford had done something like this, they would have been fired on the spot."
Epperson has denied any wrongdoing.
His attorney, Thomas McGuire, said Epperson never interfered with officers or told them to leave. Epperson merely requested that a commander supervise the officers on scene, McGuire said. Mayor Larry Morrissey has previously pointed out that Epperson's response led to a peaceful resolution of the situation.
"What the chief of police did was call the watch commander of the Rockford Police Department and ask the watch commander to see what the devil was going on," McGuire said.
Johnston, who voiced concern about the behavior of officers that night, is also expected to testify. He has previously said that he asserted his constitutional rights and declined to allow the officers into his house. He said officers threatened to kick his door down even as they refused to say why they were there or why they wanted to be allowed inside his house.
The probable cause hearing will determine whether there is enough evidence to proceed with a full hearing on the complaint.
A full day was set aside for testimony and arguments.
Cain said Epperson violated department rules and regulations and should be held accountable.
McGuire disagreed.
"This is an attempt by the union to exert its muscle for the purpose of, in effect, directing the police department," McGuire said. "The chief of police will run the police department, not a union."
Jeff Kolkey: 815-987-1374; email@example.com; @jeffkolkey


text:
I have a confession to make: I love my little cob oven, but I really don't fire it up all that often. I bake bread and make pizza all the time (doing one or both at least once a week), but 9 times out of 10, I opt to cook them in my electric oven, even during the summer, and even despite the fact it tops off at a measly 550 degrees. And here's why: she's a beaut (or at least she was, until I cocked up the "decorative" plaster layer we added a few months ago, leaving her riddled with the unsightly, parched-desert-floor cracks you can see in the image above), but she's not very efficient. It takes a lot of wood and at least two hours of firing to get her hot enough to use, and even then, she's usually only got enough gas to handle one load of bread before cooling down. That's a lot of time, wood, and effort for 4 loaves of bread. Pizza fares a little better; once the oven is hot, she stays hot enough to keep making pies as long as there's a small live fire going at the back. I've dreamed about someday trading her (sorry, Dear) in for one of those luscious (and larger) Le Panyol ovens, like the one I used at the Kneading Conference in July, but, even if I could afford the 5-10 grand an oven like that would cost, it wouldn't really solve my problem.
That's because dome masonry ovens, regardless of size or which end of the cost spectrum they sit, are inefficient when used infrequently—as they are in most home settings—since they operate by virtue of retained rather than direct (or continuous) heat. Unlike my (or your) range oven, which comes up to temperature relatively quickly and stays there as long as you don't move the temperature dial, you have to burn a lot of wood before a retained heat oven is ready for use. Retained heat equals delayed heat. The heat of the fire first gets pumped into the mass of the oven walls and floors; only after the masonry is sufficiently saturated with heat does it begin to reverse direction and heat the oven's interior. The bigger the oven—or the thicker its walls—the longer the delay (which is why a fancy and roomy Le Panyol is no real panacea.)
Bread is baked in retained-heat oven without the presence of a live fire; after the oven is saturated, the fire is raked out and the bread loaded.
At this point, the oven only stays up to temperature as long as there is enough heat socked away within the masonry. Each load of bread depletes the amount of heat remaining in the masonry; after so many loads—depending upon how long the oven was originally fired—the temperature within the oven will begin to plummet, requiring a second firing before more bread can be baked.
While pizzas and flatbreads are typically baked using a live fire, cooking them properly still calls for a fair amount of heat to be stored in the masonry, for two reasons. First of all, pizza cooks from the bottom and the top simultaneously. In order for the bottom of the pie to cook quickly, the floor of the oven needs to be hot (and to stay hot—just as with bread, unless there is a good reserve of heat buried in the hearth, each subsequent pie will draw down its temperature). Secondly, live-fire cooking calls for an already white-hot oven. Not only is the flow of air into the oven faster in a hot oven (ensuring a clean, bright fire), but the fire itself serves mainly to augment the heat supplied primarily by the surrounding masonry.
In a commercial setting, where an oven gets used day in day out, the inefficiencies of retained heat ovens disappear almost entirely, because the oven never sees enough time between firings to cool down. Each firing serves only to restore what little heat is lost during the down time (and in a well-insulated and tightly sealed oven, little heat need be lost). Daily firings of these ovens are akin to topping off a nearly-full gas tank every morning on the way to work: it doesn't take long, and there's zero chance of the needle ever getting close to E.
Until I have my fantasy bakery/slice joint up and running, where I can fire my oven daily, I'm left in something of a bind. Like most of us, I lead a busy life, and don't really have enough time to take full advantage of my WFO. And even if I did have the time, it's an awful waste of resources (even renewable ones) to burn all that wood for a few measly loaves of bread or an evening's worth of pies. I still use my cob oven, but not very often, and not without a twinge of guilt each time.
But I think I've found a solution to my dilemma. Enter the barrel oven:
I recently stumbled upon a website called Firespeaking, run by Oregon-based husband-and-wife cob and masonry builders Max and Eva Edleson. They have begun promoting the building of what are known as wood-fired barrel ovens as a modern, more efficient take on an earthen WFO. It was their description that first caught my attention:
The "barrel" oven is a very practical and wood-efficient oven which can be built at very low cost using mostly natural and recycled materials. The oven is sometimes also called a "mixed" oven because the heat generated by the wood burned cooks both by directly transferring heat into the cooking chamber as well as by retaining heat in the oven's mass and slowly returning that heat to the inside of the oven. For these reasons, this oven is much more practical to use and requires much less wood to do the same amount of baking as in the retained-heat mass ovens and traditional domed earthen ovens. It allows for quite a bit more spontaneity too since you can be baking just 15 minutes after lighting your fire. The firebox and the inside of the oven are sealed off from each other so the baking chamber is always clean of ash and carbon-black.
Here's the money quote, in case you missed it: "[The barrel oven] allows for quite a bit more spontaneity too since you can be baking just 15 minutes after lighting your fire." 15 minutes?! Holy cow! Not even a range oven gets hot that quickly.
Here's how it works: the fire is built in a long firebox toward the base of the oven, with its flue running up and around the exterior of a 55-gallon metal drum sitting above it, and then out the chimney. Dome ovens typically have limited airflow until the fire and oven is hot enough to create strong convection currents, which usually necessitates starting with a small fire near the door, only adding wood and moving it back toward the back of the oven as heat begins to build. By contrast, the fully vertical design of the barrel oven means that a healthy draft is established easily, ensuring efficient, complete—and clean—combustion of the wood almost from the get go. And because the barrel is made of (highly conductive) metal, it easily absorbs much of the heat produced. Meanwhile, because the barrel and its surrounding airspace are encased within masonry walls (made of clay, just like a cob oven), which have loads of thermal mass, excess heat from the fire slowly accumulates, requiring less and less fuel the longer the oven is in use. This is why the barrel oven is sometimes referred to as a "mixed" oven, since it combines the best of both types of ovens: direct- and retained-heat. In other words, it's the Prius of wood-fired ovens.
Here's what the barrel oven looks like on the inside:
This was the other aspect that grabbed my attention: because the fire is separated from the oven itself, and because the cooking chamber of the oven itself doesn't need to be made from thick, dense materials, there's loads more room for baking compared to most dome ovens, which have just a single deck. The design of the barrel oven includes two sliding shelves, each large enough to hold two 13"-by-18" half-sheet pans, or one full sheet. That's enough room for eight to ten 1-kilo loaves of bread, or four 12-inch pizzas at once. (It's also longer than it is wide, making it ideal for baguettes.) Contrast that with my lowly cob oven, which at best holds 4 loaves of bread or a single pizza at any one time.
Here's the thing you need to know about barrel ovens: they are a recent invention, and not quite ready for prime time. The first barrel ovens purportedly originated in Africa and were popularized in Argentina and Chile in the late 90's. They proved an important tool after the collapse of the Argentine economy in 2001, where they were promoted as low-cost and efficient ovens for small-scale commercial bakers. Unlike cob ovens, which can be made from common materials by just about anyone, the core of the barrel oven does involve some handiwork. While Firespeaking's design includes details like a double insulated door which requires welding ability, it is possible for a dedicated enthusiast to bolt together a simpler version. Moreover, unlike dome ovens, which have literally thousands of years of development behind them, the technology behind barrel ovens is in its infancy.
The Edlesons have built 4 barrel ovens around the States so far, with several more in the works right now, and they are in the process of starting to sell barrel oven kits—with all the necessary metalwork already assembled—for which they have a waiting list. The kits cost less than $1000, including shipping; the remaining materials (clay, straw, etc.) can be had cheaply, if not for free. They are also working on a pamphlet detailing how to build a barrel oven yourself, including the metalwork, due out by the end of this year (2011). They see the barrel oven as the ideal choice for small family run businesses or CSAs, but I can see it appealing equally to the home baker or pizzaiolo who—like me—wants something with more capacity and higher fuel efficiency. If you are interested in learning more about barrel ovens, check out their website, and be sure to sign up for their mailing list.
This stop-motion video, made at a recent barrel-oven building workshop taught by Eva Edleson in Asheville, NC this past spring, provides a great overview of the building process (which, once the parts and materials are accumulated, takes but a few days), as well as a good sense of how the oven functions:


text:
WASHINGTON (CNN) -- The Department of Veterans Affairs says it will study the effects of toxic emissions from burning trash at military installations in Iraq and Afghanistan on veterans, even after the Department of Defense has concluded no long-term effects exist.
Studies of the smoke from the burn pits suggests it contains dioxin and other toxins.
The extent of the VA's intention was discussed in a letter to concerned congressmen that was sent on Friday and obtained by CNN.
In the letter responding to the congressmen's inquiry on the subject, VA Secretary Eric Shinseki said he shared "concerns that some veterans could have health problems from such exposures."
"Our previous experiences with returning Vietnam War and Gulf War veterans show that we must take these concerns very seriously," he added.
Shinseki said the Department of Veterans Affairs will study the problem as part of an effort to analyze effects of troops' exposures in general and suggested it might even seek a parallel independent study.
"We are currently evaluating the need for an independent assessment by nongovernmental scientific experts to help us understand the health effects of various combat exposures," Shinseki wrote.
Sources familiar with the plan said the VA is finalizing a deal with the government's Institute of Medicine to conduct the study. The IOM did a similar investigation of Gulf War Syndrome and other effects from the first Iraq war.
The emissions, from what are known as burn pits, have been a concern for troops, especially those who served at Balad Air Force Base in Iraq. Many soldiers who went through Balad became used to "Iraqi crud," as they dubbed the symptom of excessive coughing and black phlegm.
Soldiers complained of respiratory problems and skin infections, and in some cases believed they developed leukemia and tumors from the exposure.
The pits at Balad were at one point open and burning everything from plastics and food to medical waste, sometimes with jet fuel used as an accelerant. In later years, incinerators were installed at Balad, but other bases in Iraq and Afghanistan still use the pits without incinerators to burn garbage.
The military said last year that smoke from the Balad pit exposed troops to toxic emissions, including low levels of cancer-causing dioxins. However, its tests indicated there is no long-term danger, officials said.
The U.S. Army Center for Health Promotion and Preventive Medicine (USACHPPM) conducted a study of air samples at Balad after concerns were raised about the toxic nature of the pervasive smoke from the incineration pits. The air samples were collected between January and April 2007. But the report admitted that it cannot account for everything burned in the pit.
An additional 107 samples were collected in October and November 2007. The results of those tests will be released early in 2009.
Many in the veterans' community remain unconvinced that burn pits were harmless. A group from Congress wrote to the Department of Defense and the VA demanding more tests.
In his response, Shinseki said the veterans department has an ongoing study comparing 30,000 veterans deployed to Iraq and Afghanistan and 30,000 nondeployed veterans. It is evaluating "self reported exposures (including burning trash and feces), symptoms, chronic health conditions, functional status, pregnancy outcomes and health care utilization," Shinseki wrote.
Most relevant to the burn pit concerns, Shinseki said the VA will "work with the DoD to obtain all relevant exposure data with the goal of establishing potential correlations with health problems among affected veterans."
"Our scientists will also review data gathered from DoD's Post Deployment Health Assessment surveys, which ask about exposures to smoke from burn pits, subsequent symptoms, and a variety of other health related questions," Shinseki wrote. "VA will evaluate the feasibility of monitoring toxic substances in veterans, although most toxic materials from burn pits may be eliminated from the bodies of exposed veterans in a matter of days or weeks."
Rep. Tim Bishop, D-New York, a leading congressional agitator for further inquiry into this subject, said he was encouraged by the response.
"Since time is of the essence and the lives of our troops and veterans are at stake, we expect the Department of Defense will fully cooperate with the VA, so that these analyses can be completed as quickly and accurately as possible," Bishop said in a statement.
Kerry Baker, with the group Disabled American Veterans, said the response is a start but not as focused on the burn pit issue as his group would have liked.
"This is a decent letter, but it doesn't get to the root of the problem," Baker said. "I would like to see them do studies on surrounding areas near burn pits compared to nondeployed troops."
The VA's decision to look at exposures beyond the burn pits reflects its experience looking into Gulf War Syndrome, VA spokesman Jim Benson said. The department recognizes that it needs to start now to investigate long-term affects for burn pit exposure as well as potential exposures that might lead to illness down the road.
"What we found is after the first Gulf War when a possible threat would be identified, the VA and DoD would go all-out looking at that particular problem. Now we are structuring a broad-based program that isn't going to just ask "were you around burn pits" but ask "how is your health" in general, Benson explained.
In the meantime, Benson explained, veterans with health issues they believe are related to the burn pits will get the health care they need from the VA.
"The studies will provide us with the larger picture of the risks the veterans have gone through," explained Benson. "We have the medicine and facilities to give them the care while the doctors are sorting out what caused what."
Disabled American Veterans has started collecting information on veterans concerned with exposure. Its database of nearly 200 veterans with significant exposure to the burn pits shows nearly a third have contracted cancer and another third have developed pulmonary issues, according to the group. Skin lesions and allergy symptoms have also arisen.
Benson said the VA has not seen evidence so far of significant levels of leukemia and cancer, but he said that does not mean the problem does not exist or may not arise.
"The key is the research needs to make that connection between the exposure and the disease. Some of those things don't match up, but that's what the research has to validate," Benson said.
"This does not preclude us from health care if they provide this is service-connected," Benson said. "If something is wrong with you that is related or you think is related to military service, the doors are wide open," Benson said.
All About Iraq War • U.S. Department of Defense • Afghanistan


text:
Energy regulators, who will decide this nation's energy future on a state-by-state basis, were recently invited to play games with the nation's energy challenges.
National Association of Regulatory Utility Commissioners (NARUC) Director of Grants and Research Miles Keogh explained that in order to help regulators "deal with a vast ocean of extremely complex and extremely dynamic issues," he has been building and running energy emergency tabletop exercises since the post-Hurricane Katrina period.
In 2010, NARUC began thinking about an energy challenge that "wasn't a hurricane or a cyber-attack, but something policy-driven." The group began running games challenging regulators to think about new transmission, grid preparation for electric vehicles, and integrating high levels of renewables.
With recent EPA and DOE funding, Keogh said, NARUC developed The Energy Risk Lab, a game to prepare regulators for real-world changes in power plant regulations they will face over the next five years.
The game, on which GTM sat in, dealt first with three major new power plant rules: (1) Mercury and Air Toxic Standards (MATS) (2) Cross State Air Pollution Rule(CSAPR), and (3) the Clean Air Act, Section 111B, NSPS (New Source Performance Standards).
It also asked regulators to consider (4) the Clean Water Act, Section 316B, (5) unknown potential carbon pricing, (6) hydraulic fracturing moratoria, (7) gas price volatility, (8) a national Clean Energy Standard, and (9) a rapid, energy-intensive economic recovery.
The game "gives policymakers and decision-makers an opportunity to try out different responses to a complex market, policy and technology environment," Keogh said. "They can try making a billion-dollar decision without actually having to make a billion-dollar decision."
By revealing response patterns, The Energy Risk Lab has become "a policymaker behavioral predictive tool," Keogh said. "You can model how a transmission line is going to work or how a market is going to behave but it is difficult to predict how human policy makers will respond to policy conditions." As a result, it has rendered two big insights and one small insight, Keogh said.
"We have people with a lot of experience with power plants," he explained. "When we get them all together and map out the time each takes, in sequence under the EPA regs, we have a hard time getting the time each expected for their piece and fitting that into the three-year compliance period for the first big rule we're worried about, MATS."
EPA presently requires MATS compliance by April 2015. Keogh did not say the EPA must reconsider its deadline. "All I can say for sure," Keogh said, is that in the game, "it's hard to make all those pieces sequence up in a way that takes less than three years. That's the little outcome."
The first big insight, Keogh said, "is that strategic action is more effective than reactive action. If you figure out what you are going to do and then do it, that makes for a better outcome than if you react to every problem right in front of you."
Being strategic and not looking only at the first rule but considering other rules, Keogh explained, may lead to wrong specific decisions but will tend to have a better outcome. "Folks who acted strategically, who made a plan for dealing with more than just the one rule, didn't have to go back and fix their messes as they went along," Keogh said. "A strategic approach always leads to a more favorable outcome than a reactive approach."
"The other big takeaway, Keogh said, is that having more options helps you manage your risk. Preserving options and generating new options leads to better outcomes than heading toward an obvious near-term solution."
That raises another very important question, Keogh said. "Are we making 50-year investments in infrastructure based on a two-year fuel price horizon?" If we don't preserve some of our options and generate other options that aren't just driven by that two-year fuel price horizon, he explained, we won't have the insurance of a diverse portfolio. "When you are dealing with uncertainty, you broaden your portfolio to deal with variability," he explained.
"In the near term, it is more expensive to generate a diverse portfolio, but over the course of the game -- and, I think, in the real world," he said, "[that] will lead to better outcomes than having a single, monocrop kind of portfolio."
The "breakout story" of the session GTM observed, Keogh said, was how comfortable utility representatives are with utilizing demand-side resources as an actual resource. "I didn't think people would be comfortable retiring a coal plant and replacing it with demand-side resources outright. But in the context of the game, folks are more comfortable than we had expected."
That was important, he said, because "folks who really doubled down on efficiency in the context of the game were opening up a whole package of options that diversified their portfolio." It opened up, he added, options that made them immune to things others were later hit with.
It was an "eye-opener how much efficiency and demand response punch above their weight. They look like little resources, but they really help a lot. Renewable resources, in the context of the game, played a role but it wasn't a transformative role," Keogh said. "They didn't play the outsized or unexpected role, in terms of providing benefits, that demand response and efficiency did."


text:
Police investigating infant's death, twin sister's injuries
Emergency crews called to scene early Wednesday morning
A 4-month-old boy died and his twin sister was hospitalized with serious injuries Wednesday in Lyman, police said.
Click here to view News 9's report.
The New Hampshire State Police Major Crime Unit and the Attorney General's Office are investigating the case. Investigators did not say how the infants were hurt.
Just before 5 a.m., parents at 310 Quebec Road called 911.
"When police and EMS got there, they discovered there was a 4-month-old infant male that was in medical distress," said Jeff Strelzin, the senior assistant attorney general. "That infant male was taken from the scene, treated at a local hospital, but died a short time later."
Paramedics also treated the boy's twin sister at the home, police said.
"While the police and EMS were there, they discovered there was a 4-month-old female there as well, who was the sister of the infant male," Strelzin said. "She was later found to have very serious injuries, and she's currently at a hospital as we speak."
Investigators gathered evidence at the rural property and paid special attention to a window, examining it from inside and outside the home.
"The state police have been searching the residence. They've also been speaking to people who have information about what might have occurred there – people who know the people who are in the home. Essentially trying to figure out what happened to these two children," Strelzin said.
Neighbors declined to talk about the investigation.
It was not clear where the parents of the injured children were staying. Investigators did not say if they had any suspects.
Additional developments could be pending the results of an autopsy.


text:
OCEAN CITY, Md. (AP) — The Chinese still hold the bikini parade record.
Organizers of Saturday's effort in Ocean City to take the title from Huludao City in China fell short as only about 325 woman turned out under rainy skies. Brad Hoffman, who organized the parade for the North Ocean City Business Alliance, blamed the rain for the lower than hoped for turnout.
Organizers were trying to attract more than 1,085 to break the record set in China earlier this month.
The 25-block parade began at 91st St. and headed north with women of all ages taking part. The weather cooperated a bit with the rain letting up at the start.
The $10 registration fee for the event benefited charities including the American Cancer Society's Relay for Life.


text:
Republican Paul Ryan's blueprint for Medicare could prove as polarizing in the campaign as President Barack Obama's health care overhaul has been. Even Mitt Romney may not want to go there.
Romney's new running mate has built a strong reputation on Capitol Hill for bold ideas to restrain health care costs and federal spending overall. His centerpiece idea is to steer future retirees into private insurance plans, with a fixed payment from the government that may or may not cover as much of a retiree's costs as does the current program.
Ryan, a conservative Wisconsin congressman and chairman of the House Budget Committee, calls his idea "premium support." Democrats call it a voucher plan. In theory, Ryan's plan could work, economists say. But the devil's in the details. Lots of them, and yet to be ironed out.
Ryan would also turn Medicaid over to the states, and sharply limit the growth of future spending on that safety net program. Between them, Medicare and Medicaid (explain this) cover about 100 million people, touching nearly every American family in some way.
While expressing support broadly, Romney has yet to spell out where he stands on specifics of his running mate's proposals. And that could get tricky.
Mindful of the risks, Romney put gentle but unmistakable distance between his agenda and Ryan's hot-potato budget proposals on Sunday, a day after announcing his running mate's selection. The presidential candidate singled out Ryan's work "to make sure we can save Medicare." But Romney never said whether he embraced that plan himself. During the Republican primary, Romney had called Ryan's budget a "bold and exciting effort" that was "very much needed."
Democrats wouldn't let them off the hook, criticizing the "Ryan-Romney" Medicare plan at every turn.
"From the standpoint of public understanding, the Romney-Ryan ticket has a hill to climb," said health economist Joe Antos of the business-oriented American Enterprise Institute. "I think they can do it, but it's going to require some explaining. I think there are a lot of independents who are going to be nervous."
Seniors vote at higher rates than younger voters, and Medicare matters to them. Concern about Medicare cuts in Obama's health care law helped drive older voters into the Republican camp in the 2010 congressional elections, delivering control of the House to the GOP.
"This puts Medicare in play as a central issue in the campaign," said John Rother, president of the National Coalition on Health Care, a nonpartisan group representing a broad swath of players in the health care system.
The political sensitivities are clear. Polls find that Americans lean heavily on Medicare to help keep them secure after retirement and are suspicious of proposed alternatives, such as Ryan's plan. Surveys also give Democrats an edge over Republicans when people are asked which party people most trust to handle Medicare. Democrats held a 48 percent-39 percent advantage on that issue in a June 2011 AP-GfK poll.
In an interview Sunday on CBS' "60 Minutes," Romney and Ryan both offered words meant to reassure the elderly.
America is about more choices, Romney said, and "that's how we make Medicare work down the road." He said the program won't change for seniors currently counting on the program. Ryan pitched in that his mother is a "Medicare senior in Florida."
For the most part, Ryan's plan would not directly affect people now in Medicare. One exception: In repealing Obama's health care law, Ryan would re-open the Medicare prescription coverage gap called the doughnut hole.
Under his plan, people now 54 and younger would go into a very different sort of Medicare. Upon becoming eligible, they would receive a government payment that they could use to pick a private insurance plan or a government-run program like traditional Medicare. The payment would be indexed to account for inflation, and that could be a problem if health care costs race ahead of the inflation rate.
The private plans would be regulated by the government, and low-income people, as well as those with severe health problems, would get additional assistance. People who pick plans with relatively generous benefits would pay more out of their own pockets.
The transformation would mirror the shift in workplace pension plans taking place over the last 20 years. Medicare would start looking more like a 401(k) plan than a plan that provides open-ended coverage for a set of benefits.
Ryan would also gradually raise the Medicare eligibility age from the current 65 to 67. In more general terms, Romney has also spoken of providing "generous" but undetermined subsidies to help future retirees buy private insurance, or let them have the option of traditional Medicare. He's also endorsed a gradually increasing age to qualify for benefits.
Some prominent Democrats have supported Ryan's general approach, even teaming up with him on different versions of his proposal. The GOP-led House has passed budgets written by Ryan two years in a row.
Backers say the result of his Medicare plan would be a more affordable and sustainable program, both for taxpayers and beneficiaries. Currently, Medicare's giant trust fund for inpatient care is projected to run out of money in 2024.
But critics see a massive cost shift to beneficiaries.
"The only way to drive real savings is to set a lid on the growth in the voucher," said Democratic economist Judy Feder. "That most likely means shifting costs to beneficiaries, not controlling costs."
Antos, however, called the latest version of Ryan's proposal a "reasonable plan" that "provides a decent benefit for people."
In an analysis earlier this year, the nonpartisan Congressional Budget Office said some of the effects of Ryan's plan "would of necessity be a great deal stronger" than current law, which includes Medicare cuts in Obama's health care law yet to take place.
Under the most likely current budget scenario, Medicare spending for the typical 66-year-old would rise to $9,600 in 2030, or about 75 percent more than now, the CBO projected.
But under Ryan's plan, spending would rise more slowly to $7,400, or about 35 percent more than current levels.
That difference would result in a cost shift of thousands of dollars to individual retirees, critics say.
Under the previous version of Ryan's plan, a typical 65-year-old retiree would have been responsible for about two-thirds of his or her health care costs in 2030.
Ryan's proposal for turning Medicaid into a block grant program for the states would also have far-reaching consequences. It sharply reduces the future size of the program relative to the overall economy, the CBO said.
Even if states can run Medicaid more efficiently, they'd still face the difficult choice between cutting the program or pouring more of their own money into it, the CBO said.


text:
14 September 2011
Alison Brimelow, who served as President of the EPO for three years from 2007 to 2010 has been awarded the Commander's Cross of the Order of Merit of the Federal Republic of Germany (Grosses Bundesverdienstkreuz).
In a ceremony in Berlin, the State Secretary in the Federal Ministry of Justice, Dr Birgit Grundmann, made particular mention of Alison Brimelow's pioneer role as the first woman President of the EPO and her achievements in reforming and guiding the Office through a time of financial crisis, as well as her personal engagement in the life of her adopted city of Munich.
The Order of Merit of the Federal, Republic of Germany was instituted in 1951 by Federal President Theodor Heuss. It is the only honour that may be awarded in all fields of endeavour and is the highest tribute the Federal Republic of Germany can pay to individuals for services to the nation.


text:
The rich and poor think in very different ways, and that's the real difference between them. If you've been in a pattern of financial lack or a lack of progress all your business life, then you need to examine your thinking and adjust it to match your goals.
The best way to determine what mental patterns are running your financial life is to look at your results, then ask yourself these revealing questions…
- Do you consistently earn large amounts or small amounts of money?
- Is your income consistent or inconsistent?
- Do you struggle for money or does money come easily?
- When you have money, are you an investor or a spender?
- What's the highest amount your mind has ever let you earn?
It's important to realize that no matter what your current money pattern is, you can improve it or even change it completely if you want to. The first step is awareness – Awareness of what patterns have been creating your current results and how they differ from the patterns you should be running.
To get you started, here 17 ways Rich people think different from poor people (From T. Harv Eker's book "The Millionaire Mind" – Read it!);
- Rich people believe "I create my life." Poor people believe "Life happens to me."
- Rich people play the money game to win. Poor people play the money game to not lose.
- Rich people are committed to being rich. Poor people want to be rich.
- Rich people think big. Poor people think small.
- Rich people focus on opportunities. Poor people focus on obstacles.
- Rich people admire other rich and successful people. Poor people resent rich and successful people.
- Rich people associate with positive, successful people. Poor people associate with negative or unsuccessful people.
- Rich people are willing to promote themselves and their value. Poor people think negatively about selling and promotion.
- Rich people are bigger than their problems. Poor people are smaller than their problems.
- Rich people are excellent receivers. Poor people are poor receivers.
- Rich people choose to get paid based on results. Poor people choose to get paid based on time.
- Rich people think "both." Poor people think "either/or."
- Rich people focus on their net worth. Poor people focus on their working income.
- Rich people manage their money well. Poor people mismanage their money well.
- Rich people have their money work hard for them. Poor people work hard for their money.
- Rich people act in spite of fear. Poor people let fear stop them.
- Rich people constantly learn and grow. Poor people think they already know.
You must acquire the mental patterns that create wealth and put them to use immediately. Remember, we are creatures of habit, and therefore the habit of managing your money (and mind) effectively is more important than the amount you're on today.


text:
Hello, 2013!
Tuesday, January 01, 2013
Subscribe to: Post Comments (Atom)
This blog belongs to two Gen X-er's smackdab in downtown Kansas City where we've been renovating and decorating two old Victorians built in the 1890's. Our life is filled with 3 demanding Pomeranians (1 of them cranky, of course), honking cars, noisy neighbors and the hustle and bustle of city life but we dream of the day when we can move to our 40-acre farm and hear nothing but the wind and the cows next door. Until then, we're chronicling our triumphs and mishaps here as we try to garden and preserve on 2 city lots, raise chickens, and learn all those things we should have learned from our grandparents. Welcome to our world - we hope you'll stay awhile!
Tuesday, January 01, 2013
Copyright (C) 2015 Cranky Puppy Farm. All rights reserved. Powered by Blogger.


text:
Build a Battery Tester
An Arduino can be used to test the life of any battery with less than 5 volts, Boxall says. So, for a quick way to see how much juice your AAA, AA, C, or D batteries have left, build this Arduino-based battery tester, which can display battery life via a string of LEDs.
Roll the Dice
The next time you're playing Monopoly, take a technological steup up from rolling plastic cubes by making Boxall's Arduino electronic die, which chooses a random number between 1 and 6 and displays it via a corresponding LED. At least when you go directly to jail you'll have a cool creation to pass the time.
More From Popular Mechanics
Control Traffic
Build a working model traffic signal. It not only displays red, yellow, and green for each direction of oncoming traffic, but also includes a sensor to see a car approaching the one-lane road, which switches the light to green if there's no traffic coming from the opposite direction.
Stop the Clock
Two pushbuttons, a breadboard, a couple of resistors, and some wires are about all it takes to turn an Arduino unit into a stopwatch.
Create a Keypad Lock
Put Arduino to work protecting your secrets. This project is a keypad-controlled lock that will allow the user to select a six-digit secret code and lock out anyone without it.
Your Own Tank Robot
Now we're having fun. Last year PopMech published plans to build your first robot, a rolling little character based on an Arduino unit. Boxall's project will help you build a more rugged pint-size vehicle. The tank robot uses a small motor for each tread to climb over obstacles.
GPS Receiver
Where the heck are we, anyway? With an Arduino, a GPS shield kit by SparkFun, and a few other key ingredients, you can create a small receiver to tell you your longitude and latitude at any given time.
Keep Time
You know from the stopwatch project that Arduino can keep time. You know from the GPS-receiver project that it can be hooked up to an LCD display. Put those two features together to build this Arduino digital clock.
Mechanical Twitter
Everyone's on Twitter now—even Hillary Clinton. So why shouldn't your Arduino tweet? Here's how to make it happen.
Arduino Texter
Perhaps you don't want your mechanical creations to share their thoughts with the world at large. Instead of programming an Arduino to tweet, follow these directions to let it send texts to a phone.
Andrew's from Nebraska. His work has also appeared in Discover, The Awl, Scientific American, Mental Floss, Playboy, and elsewhere. He lives in Brooklyn with two cats and a snake.


text:
|Unicode 6.1.0
|Mark Davis (firstname.lastname@example.com)
|This Version
|Previous Version
|Latest Version
|Latest Proposed Update
This annex describes specifications for the positioning of characters in text containing characters flowing from right to left, such as Arabic or Hebrew.
This document has been reviewed by Unicode members and other interested parties, and has been approved for publication by the Unicode Consortium. This is a stable document and may be used as reference material or cited as a normative reference by other specifications.
A Unicode Standard Annex (UAX) forms an integral part of the Unicode Standard, but is published online as a separate document. The Unicode Standard may require conformance to normative content in a Unicode Standard Annex, if so specified in the Conformance chapter of that version of the Unicode Standard. The version number of a UAX document corresponds to the version of the Unicode Standard of which it forms a part.
Please submit corrigenda and other comments with the online reporting form [Feedback]. Related information that is useful in understanding this annex is found in Unicode Standard Annex #41, "Common References for Unicode Standard Annexes." For the latest version of the Unicode Standard, see [Unicode]. For a list of current Unicode Technical Reports, see [Reports]. For more information about versions of the Unicode Standard, see [Versions]. For any errata which may apply to this annex, see [Errata].
The Unicode Standard prescribes a memory representation order known as logical order. When text is presented in horizontal lines, most scripts display characters from left to right. However, there are several scripts (such as Arabic or Hebrew) where the natural ordering of horizontal text in display is from right to left. If all of the text has a uniform horizontal direction, then the ordering of the display text is unambiguous.
However, because these right-to-left scripts use digits that are written from left to right, the text is actually bidirectional: a mixture of right-to-left and left-to-right text. In addition to digits, embedded words from English and other scripts are also written from left to right, also producing bidirectional text. Without a clear specification, ambiguities can arise in determining the ordering of the displayed characters when the horizontal direction of the text is not uniform.
This annex describes the algorithm used to determine the directionality for bidirectional Unicode text. The algorithm extends the implicit model currently employed by a number of existing implementations and adds explicit format codes for special circumstances. In most cases, there is no need to include additional information with the text to obtain correct display ordering.
However, in the case of bidirectional text, there are circumstances where an implicit bidirectional ordering is not sufficient to produce comprehensible text. To deal with these cases, a minimal set of directional formatting codes is defined to control the ordering of characters when rendered. This allows exact control of the display ordering for legible interchange and ensures that plain text used for simple items like filenames or labels can always be correctly ordered for display.
The directional formatting codes are used only to influence the display ordering of text. In all other respects they should be ignored—they have no effect on the comparison of text or on word breaks, parsing, or numeric analysis.
When working with bidirectional text, the characters are still interpreted in logical order—only the display is affected. The display ordering of bidirectional text depends on the directional properties of the characters in the text. Note that there are important security issues connected with bidirectional text: for more information, see [UTR36].
Two types of explicit codes are used to modify the standard implicit Unicode Bidirectional Algorithm (UBA). In addition, there are implicit ordering codes, the right-to-left and left-to-right marks. All of these codes are limited to the current paragraph; thus their effects are terminated by a paragraph separator. The directional types left-to-right and right-to-left are called strong types, and characters of those types are called strong directional characters. The directional types associated with numbers are called weak types, and characters of those types are called weak directional characters.
These controls all have the property Bidi_Control, and are divided into two groups:
Implicit Bidi Controls
Explicit Bidi Controls
On web pages, the explicit bidi controls should be replaced by using the dir attribute with the values dir="ltr" or dir="rtl". For more information, see [UTR20].
Although the term embedding is used for some explicit codes, the text within the scope of the codes is not independent of the surrounding text. Characters within an embedding can affect the ordering of characters outside, and vice versa. The algorithm is designed so that the use of explicit codes can be equivalently represented by out-of-line information, such as stylesheet information. However, any alternative representation will be defined by reference to the behavior of the explicit codes in this algorithm.
The following codes signal that a piece of text is to be treated as embedded. For example, an English quotation in the middle of an Arabic sentence could be marked as being embedded left-to-right text. If there were a Hebrew phrase in the middle of the English quotation, the that phrase could be marked as being embedded right-to-left. These codes allow for nested embeddings.
|Treat the following text as embedded left-to-right.
|Treat the following text as embedded right-to-left.
The effect of right-left line direction, for example, can be accomplished by embedding the text with RLE...PDF.
The following codes allow the bidirectional character types to be overridden when required for special cases, such as for part numbers. These codes allow for nested directional overrides. These characters are to be avoided wherever possible, because of security concerns. For more information, see [UTR36].
|Force following characters to be treated as strong left-to-right characters.
|Force following characters to be treated as strong right-to-left characters.
The precise meaning of these codes will be made clear in the discussion of the algorithm. The right-to-left override, for example, can be used to force a part number made of mixed English, digits and Hebrew letters to be written from right to left.
The following code terminates the effects of the last explicit code (either embedding or override) and restores the bidirectional state to what it was before that code was encountered.
|Restore the bidirectional state to what it was before the last LRE, RLE, RLO, or LRO.
The precise meaning of this code will be made clear in the discussion of the algorithm.
These characters are very light-weight codes. They act exactly like right-to-left or left-to-right characters, except that they do not display or have any other semantic effect. Their use is more convenient than using explicit embeddings or overrides because their scope is much more local.
|Left-to-right zero-width character
|Right-to-left zero-width character
There is no special mention of the implicit directional marks in the following algorithm. That is because their effect on bidirectional ordering is exactly the same as a corresponding strong directional character; the only difference is that they do not appear in the display.
The Unicode Bidirectional Algorithm (UBA) takes a stream of text as input and proceeds in four main phases:
The algorithm reorders text only within a paragraph; characters in one paragraph have no effect on characters in a different paragraph. Paragraphs are divided by the Paragraph Separator or appropriate Newline Function (for guidelines on the handling of CR, LF, and CRLF, see Section 4.4, Directionality, and Section 5.8, Newline Guidelines of [Unicode]). Paragraphs may also be determined by higher-level protocols: for example, the text in two different cells of a table will be in different paragraphs.
Combining characters always attach to the preceding base character in the memory representation. Even after reordering for display and performing character shaping, the glyph representing a combining character will attach to the glyph representing its base character in memory. Depending on the line orientation and the placement direction of base letterform glyphs, it may, for example, attach to the glyph on the left, or on the right, or above.
This annex uses the numbering conventions for normative definitions and rules in Table 1.
|Paragraph levels
|Explicit levels and directions
|Weak types
|Neutral types
|Implicit levels
|Resolved levels
BD1. The bidirectional characters types are values assigned to each Unicode character, including unassigned characters. The formal property name in the Unicode Character Database [UCD] is Bidi_Class.
BD2. Embedding levels are numbers that indicate how deeply the text is nested, and the default direction of text on that level. The minimum embedding level of text is zero, and the maximum explicit depth is level 61.
Embedding levels are explicitly set by both override format codes and by embedding format codes; higher numbers mean the text is more deeply nested. The reason for having a limitation is to provide a precise stack limit for implementations to guarantee the same results. Sixty-one levels is far more than sufficient for ordering, even with mechanically generated formatting; the display becomes rather muddied with more than a small number of embeddings.
BD3. The default direction of the current embedding level (for the character in question) is called the embedding direction. It is L if the embedding level is even, and R if the embedding level is odd.
For example, in a particular piece of text, Level 0 is plain English text. Level 1 is plain Arabic text, possibly embedded within English level 0 text. Level 2 is English text, possibly embedded within Arabic level 1 text, and so on. Unless their direction is overridden, English text and numbers will always be an even level; Arabic text (excluding numbers) will always be an odd level. The exact meaning of the embedding level will become clear when the reordering algorithm is discussed, but the following provides an example of how the algorithm works.
BD4. The paragraph embedding level is the embedding level that determines the default bidirectional orientation of the text in that paragraph.
BD5. The direction of the paragraph embedding level is called the paragraph direction.
BD6. The directional override status determines whether the bidirectional type of characters is to be reset. The override status is set by using explicit directional controls. This status has three states, as shown in Table 2.
|No override is currently active
|Characters are to be reset to R
|Characters are to be reset to L
BD7. A level run is a maximal substring of characters that have the same embedding level. It is maximal in that no character immediately before or after the substring has the same level (a level run is also known as a directional run).
In this and the following examples, case is used to indicate different implicit character types for those unfamiliar with right-to-left letters. Uppercase letters stand for right-to-left characters (such as Arabic or Hebrew), and lowercase letters stand for left-to-right characters (such as English or Russian).
Memory: car is THE CAR in arabic Character types: LLL-LL-RRR-RRR-LL-LLLLLL Resolved levels: 000000011111110000000000
Notice that the neutral character (space) between THE and CAR gets the level of the surrounding characters. The level of the neutral characters can also be changed by inserting appropriate directional marks around neutral characters. These marks have no other effects.
Table 3 lists additional abbreviations used in the examples and internal character types used in the algorithm.
|Neutral or Separator (B, S, WS, ON)
|The text ordering type (L or R) that matches the embedding level direction (even or odd)
|The text ordering type (L or R) assigned to the position before a level run.
|The text ordering type (L or R) assigned to the position after a level run.
The normative bidirectional character types for each character are specified in the Unicode Character Database [UCD] and are summarized in Table 4. This is a summary only: there are exceptions to the general scope. For example, certain characters such as U+0CBF KANNADA VOWEL SIGN I are given Type L (instead of NSM) to preserve canonical equivalence.
Note: The Bidirectional Algorithm does not preserve compatibility equivalence.
The body of the Bidirectional Algorithm uses character types and explicit codes to produce a list of resolved levels. This resolution process consists of five steps: (1) determining the paragraph level; (2) determining explicit embedding levels and directions; (3) resolving weak types; (4) resolving neutral types; and (5) resolving implicit embedding levels.
P1. Split the text into separate paragraphs. A paragraph separator is kept with the previous paragraph. Within each paragraph, apply all the other rules of this algorithm.
P2. In each paragraph, find the first character of type L, AL, or R.
Because paragraph separators delimit text in this algorithm, this will generally be the first strong character after a paragraph separator or at the very beginning of the text. Note that the characters of type LRE, LRO, RLE, or RLO are ignored in this rule. This is because typically they are used to indicate that the embedded text is the opposite direction than the paragraph level.
P3. If a character is found in P2 and it is of type AL or R, then set the paragraph embedding level to one; otherwise, set it to zero.
Whenever a higher-level protocol specifies the paragraph level, rules P2 and P3 may be overridden: see HL1.
All explicit embedding levels are determined from the embedding and override codes, by applying the explicit level rules X1 through X9. These rules are applied as part of the same logical pass over the input. As each character is processed, the current embedding level and the directional override status are tracked, being adjusted or kept the same depending on the type of that character. In turn, the current embedding level and the directional override status affect the assignment of the explicit embedding level for each character as defined by rules X1 through X9.
X1. Begin by setting the current embedding level to the paragraph embedding level. Set the directional override status to neutral. Process each character iteratively, applying rules X2 through X9. Only embedding levels from 0 to 61 are valid in this phase.
In the resolution of levels in rules I1 and I2, the maximum embedding level of 62 can be reached.
X2. With each RLE, compute the least greater odd embedding level.
a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to neutral.
b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status.
For example, level 0 → 1; levels 1, 2 → 3; levels 3, 4 → 5; ...59, 60 → 61; above 60, no change (do not change levels with RLE if the new level would be invalid).
X3. With each LRE, compute the least greater even embedding level.
a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to neutral.
b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status.
For example, levels 0, 1 → 2; levels 2, 3 → 4; levels 4, 5 → 6; ...58, 59 → 60; above 59, no change (do not change levels with LRE if the new level would be invalid).
An explicit directional override sets the embedding level in the same way the explicit embedding codes do, but also changes the directional character type of affected characters to the override direction.
X4. With each RLO, compute the least greater odd embedding level.
a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to right-to-left.
b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status.
X5. With each LRO, compute the least greater even embedding level.
a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to left-to-right.
b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status.
X6. For all types besides BN, RLE, LRE, RLO, LRO, and PDF:
a. Set the level of the current character to the current embedding level.
b. Whenever the directional override status is not neutral, reset the current character type according to the directional override status.
If the directional override status is neutral, then characters retain their normal types: Arabic characters stay AL, Latin characters stay L, neutrals stay N, and so on. If the directional override status is R, then characters become R. If the directional override status is L, then characters become L. The current embedding level is not changed by this rule.
There is a single code to terminate the scope of the current explicit code, whether an embedding or a directional override. All codes and pushed states are completely popped at the end of paragraphs.
X7. With each PDF, determine the matching embedding or override code. If there was a valid matching code, restore (pop) the last remembered (pushed) embedding level and directional override.
X8. All explicit directional embeddings and overrides are completely terminated at the end of each paragraph. Paragraph separators are not included in the embedding.
X9. Remove all RLE, LRE, RLO, LRO, PDF, and BN codes.
Note that an implementation does not have to actually remove the codes; it just has to behave as though the codes were not present for the remainder of the algorithm. Conformance does not require any particular placement of these codes as long as all other characters are ordered correctly.
See Section 5, Implementation Notes, for information on implementing the algorithm without removing the formatting codes.
X10. The remaining rules are applied to each run of characters at the same level. For each run, determine the start-of-level-run (sor) and end-of-level-run (eor) type, either L or R. This depends on the higher of the two levels on either side of the boundary (at the start or end of the paragraph, the level of the "other" run is the base embedding level). If the higher level is odd, the type is R; otherwise, it is L.
For example:
Levels: 0 0 0 1 1 1 2 Runs: <--- 1 ---> <--- 2 ---> <3>
Run 1 is at level 0, sor is L, eor is R.
Run 2 is at level 1, sor is R, eor is L.
Run 3 is at level 2, sor is L, eor is L.
For two adjacent runs, the eor of the first run is the same as the sor of the second.
Weak types are now resolved one level run at a time. At level run boundaries where the type of the character on the other side of the boundary is required, the type assigned to sor or eor is used.
Nonspacing marks are now resolved based on the previous characters.
W1. Examine each nonspacing mark (NSM) in the level run, and change the type of the NSM to the type of the previous character. If the NSM is at the start of the level run, it will get the type of sor.
Assume in this example that sor is R:
AL NSM NSM → AL AL AL sor NSM → sor R
The text is next parsed for numbers. This pass will change the directional types European Number Separator, European Number Terminator, and Common Number Separator to be European Number text, Arabic Number text, or Other Neutral text. The text to be scanned may have already had its type altered by directional overrides. If so, then it will not parse as numeric.
W2. Search backward from each instance of a European number until the first strong type (R, L, AL, or sor) is found. If an AL is found, change the type of the European number to Arabic number.
AL EN → AL AN AL N EN → AL N AN sor N EN → sor N EN L N EN → L N EN R N EN → R N EN
W3. Change all ALs to R.
W4. A single European separator between two European numbers changes to a European number. A single common separator between two numbers of the same type changes to that type.
W5. A sequence of European terminators adjacent to European numbers changes to all European numbers.
W6. Otherwise, separators and terminators change to Other Neutral.
W7. Search backward from each instance of a European number until the first strong type (R, L, or sor) is found. If an L is found, then change the type of the European number to L.
Neutral types are now resolved one level run at a time. At level run boundaries where the type of the character on the other side of the boundary is required, the type assigned to sor or eor is used.
The next phase resolves the direction of the neutrals. The results of this phase are that all neutrals become either R or L. Generally, neutrals take on the direction of the surrounding text. In case of a conflict, they take on the embedding direction.
N1. A sequence of neutrals takes the direction of the surrounding strong text if the text on both sides has the same direction. European and Arabic numbers act as if they were R in terms of their influence on neutrals. Start-of-level-run (sor) and end-of-level-run (eor) are used at level run boundaries.
N2. Any remaining neutrals take the embedding direction.
N → e
The embedding direction for the given neutral character is derived from its embedding level: L if the character is set to an even level, and R if the level is odd. (See BD3.)
Assume in the following example that eor is L and sor is R. Then an application of N1 and N2 yields the following:
L N eor → L L eor R N eor → R e eor sor N L → sor e L sor N R → sor R R
Examples. A list of numbers separated by neutrals and embedded in a directional run will come out in the run's order.
Storage: he said "THE VALUES ARE 123, 456, 789, OK". Display: he said "KO ,789 ,456 ,123 ERA SEULAV EHT".
In this case, both the comma and the space between the numbers take on the direction of the surrounding text (uppercase = right-to-left), ignoring the numbers. The commas are not considered part of the number because they are not surrounded on both sides by digits (see Section 3.3.3, Resolving Weak Types). However, if there is a preceding left-to-right sequence, then European numbers will adopt that direction:
Storage: IT IS A bmw 500, OK. Display: .KO ,bmw 500 A SI TI
In the final phase, the embedding level of text may be increased, based on the resolved character type. Right-to-left text will always end up with an odd level, and left-to-right and numeric text will always end up with an even level. In addition, numeric text will always end up with a higher level than the paragraph level. (Note that it is possible for text to end up at levels higher than 61 as a result of this process.) This results in the following rules:
I1. For all characters with an even (left-to-right) embedding direction, those of type R go up one level and those of type AN or EN go up two levels.
I2. For all characters with an odd (right-to-left) embedding direction, those of type L, EN or AN go up one level.
Table 5 summarizes the results of the implicit algorithm.
|Embedding Level
The following rules describe the logical process of finding the correct display order. As opposed to resolution phases, these rules act on a per-line basis and are applied after any line wrapping is applied to the paragraph.
Logically there are the following steps:
L1. On each line, reset the embedding level of the following characters to the paragraph embedding level:
In combination with the following rule, this means that trailing whitespace will appear at the visual end of the line (in the paragraph direction). Tabulation will always have a consistent direction within a paragraph.
L2. From the highest level found in the text to the lowest odd level on each line, including intermediate levels not actually present in the text, reverse any contiguous sequence of characters that are at that level or higher.
This rule reverses a progressively larger series of substrings.
The following examples illustrate the reordering, showing the
successive steps in application of Rule L2. The original text, including any
embedding codes for producing the particular levels, is shown in the "Storage" row in the
example tables. The application of the rules from Section 3.3 Resolving Embedding Levels
and of the Rule
L1 results in (a) text with Bidi Controls and BN characters removed,
plus (b) resolved levels. These are listed in the rows "Before Reordering" and "Resolved
Levels". Each successive row thereafter shows the one pass of reversal from Rule L2, such as
"Reverse levels 1-2". At each iteration, the underlining shows the text that has been reversed.
The paragraph embedding level for the first and third examples is 0 (left-to-right direction), and for the second and fourth examples is 1 (right-to-left direction).
car means CAR.
|Before Reordering:
car means CAR.
|Resolved levels:
|Reverse level 1:
car means RAC.
|car MEANS CAR.
|Before Reordering:
car MEANS CAR.
|Resolved levels:
|Reverse level 2:
rac MEANS CAR.
|Reverse levels 1-2:
.RAC SNAEM car
|he said "car MEANS CAR."
|Before Reordering:
he said "car MEANS CAR."
|Resolved levels:
|Reverse level 2:
he said "rac MEANS CAR."
|Reverse levels 1-2:
he said "RAC SNAEM car."
|DID YOU SAY 'he said "car MEANS CAR"'?
|Before Reordering:
DID YOU SAY 'he said "car MEANS CAR"'?
|Resolved levels::
|Reverse level 4:
DID YOU SAY 'he said "rac MEANS CAR"'?
|Reverse levels 3-4:
DID YOU SAY 'he said "RAC SNAEM car"'?
|Reverse levels 2-4:
DID YOU SAY '"rac MEANS CAR" dias eh'?
|Reverse levels 1-4:
?'he said
RAC SNAEM car
L3. Combining marks applied to a right-to-left base character will at this point precede their base character. If the rendering engine expects them to follow the base characters in the final display process, then the ordering of the marks and the base character must be reversed.
Many font designers provide default metrics for combining marks that support rendering by simple overhang. Because of the reordering for right-to-left characters, it is common practice to make the glyphs for most combining characters overhang to the left (thus assuming the characters will be applied to left-to-right base characters) and make the glyphs for combining characters in right-to-left scripts overhang to the right (thus assuming that the characters will be applied to right-to-left base characters). With such fonts, the display ordering of the marks and base glyphs may need to be adjusted when combining marks are applied to "unmatching" base characters. See Section 5.13, Rendering Nonspacing Marks of [Unicode], for more information.
L4. A character is depicted by a mirrored glyph if and only if (a) the resolved directionality of that character is R, and (b) the Bidi_Mirrored property value of that character is true.
For example, U+0028 left parenthesis—which is interpreted in the Unicode Standard as an opening parenthesis—appears as "(" when its resolved level is even, and as the mirrored glyph ")" when its resolved level is odd. Note that for backward compatibility the characters U+FD3E (﴾) ORNATE LEFT PARENTHESIS and U+FD3F (﴿) ORNATE RIGHT PARENTHESIS are not mirrored.
Cursively connected scripts, such as Arabic or Syriac, require the selection of positional character shapes that depend on adjacent characters (see Section 8.2, Arabic of [Unicode]). Shaping is logically applied after the Bidirectional Algorithm is used and is limited to characters within the same directional run. Consider the following example string of Arabic characters, which is represented in memory as characters 1, 2, 3, and 4, and where the first two characters are overridden to be LTR. To show both paragraph directions, the next two are embedded, but with the normal RTL direction.
1 2 3 4 ج
One can use embedding codes to achieve this effect in plain text or use markup in HTML, as in the examples below. (The bold text would be for the right-to-left paragraph direction.)
The resulting shapes will be the following, according to the paragraph direction:
|Left-Right Paragraph
|Right-Left Paragraph
The process of breaking a paragraph into one or more lines that fit within particular bounds is outside the scope of the Bidirectional Algorithm. Where character shaping is involved, the width calculations must be based on the shaped glyphs.
Note that the soft-hyphen (SHY) works in cursively connected scripts as it does in other scripts. That is, it indicates a point where the line could be broken in the middle of a word. If the rendering system breaks at that point, the display—including shaping—should be what is appropriate for the given language. For more information on this and other line breaking issues, see Unicode Standard Annex #14, "Line Breaking Properties" [UAX14].
A process that claims conformance to this specification shall satisfy the following clauses:
In the absence of a permissible higher-level protocol, a process that renders text shall display all visible representations of characters (excluding format characters) in the order described by Section 3, Basic Display Algorithm, of this annex. In particular, this includes definitions BD1–BD7 and steps P1–P3, X1–X10, W1–W7, N1–N2, I1–I2, and L1–L4.
The only permissible higher-level protocols are those listed in Section 4.3, Higher-Level Protocols. They are HL1, HL2, HL3, HL4, HL5, and HL6.
Use of higher-level protocols is discouraged, because it introduces interchange problems and can lead to security problems. For more information, see Unicode Technical Report #36, "Unicode Security Considerations" [UTR36].
The goal in marking a format or control character as BN is that it have no effect on the rest of the algorithm. (ZWJ and ZWNJ are exceptions; see X9). Because conformance does not require the precise ordering of format characters with respect to others, implementations can handle them in different ways as long as they preserve the ordering of the other characters.
As with any Unicode characters, systems do not have to support any particular explicit directional formatting code (although it is not generally useful to include a terminating code without including the initiator). Generally, conforming systems will fall into three classes:
The following clauses are the only permissible ways for systems to apply higher-level protocols to the ordering of bidirectional text. Some of the clauses apply to segments of structured text. This refers to the situation where text is interpreted as being structured, whether with explicit markup such as XML or HTML, or internally structured such as in a word processor or spreadsheet. In such a case, a segment is span of text that is distinguished in some way by the structure.
|Override P3, and set the paragraph embedding level explicitly.
|Override W2, and set EN or AN explicitly.
|Emulate directional overrides or embedding codes.
|Apply the Bidirectional Algorithm to segments.
|Provide artificial context.
|Additional mirroring.
Clauses HL1 and HL3 are specialized applications of the more general clauses HL4 and HL5. They are provided here explicitly because they directly correspond to common operations.
As an example of the application of HL4, suppose an XML document contains the following fragment. (Note: This is a simplified example for illustration: element names, attribute names, and attribute values could all be involved.)
ARABICenglishARABIC<e1 type='ab'>ARABICenglish<e2 type='cd'>english
This can be analyzed as being five different segments:
<e1 type='ab'>
<e2 type='cd'>
To make the XML file readable as source text, the display in an editor could order these elements all in a uniform direction (for example, all left-to-right) and apply the Bidirectional Algorithm to each field separately. It could also choose to order the element names, attribute names, and attribute values uniformly in the same direction (for example, all left-to-right). For final display, the markup could be ignored, allowing all of the text (segments a, c, and e) to be reordered together.
BidiTest.txt file in the Unicode
Character Database [UCD]
provides a conformance test for UBA implementations. It is designed to be
reasonably compact, and yet provide a thorough test of all cases up to a
given limit (currently 4). The format is described in detail in the header
of the file.
There are two versions of BIDI reference code available. Both have been tested to produce identical results. One version is written in Java, and the other is written in C++. The Java version is designed to closely follow the steps of the algorithm as described below. The C++ code is designed to show one of the optimization methods that can be applied to the algorithm, using a state table for one phase.
One of the most effective optimizations is to first test for right-to-left characters and not invoke the Bidirectional Algorithm unless they are present.
There are two directories containing source code for reference implementations at [Code9]. Implementers are encouraged to use this resource to test their implementations. There is an online demo of bidi code at http://unicode.org/cldr/utility/bidi.jsp, which shows the results, plus the levels and the rules invoked for each character.
Some implementations may wish to retain the format codes when running the algorithm. The following provides a summary of how this may be done. Note that this summary is an informative implementation guideline; it should provide the same results as the explicit algorithm above, but in case of any deviation the explicit algorithm is the normative statement for conformance.
Implementations that display visible representations of format characters will want to adjust this process to position the format characters optimally for editing.
As described under X9, the zero width joiner and non-joiner affect the shaping of the adjacent characters—those that are adjacent in the original backing-store order—even though those characters may end up being rearranged to be non-adjacent by the Bidirectional Algorithm. To determine the joining behavior of a particular character after applying the Bidirectional Algorithm, there are two main strategies:
In the case of vertical line orientation, the Bidirectional Algorithm is still used to determine the levels of the text. However, these levels are not used to reorder the text, because the characters are usually ordered uniformly from top to bottom. Instead, the levels are used to determine the rotation of the text. Sometimes vertical lines follow a vertical baseline in which each character is oriented as normal (with no rotation), with characters ordered from top to bottom whether they are Hebrew, numbers, or Latin. When setting text using the Arabic script in vertical lines, it is more common to employ a horizontal baseline that is rotated by 90° counterclockwise so that the characters are ordered from top to bottom. Latin text and numbers may be rotated 90° clockwise so that the characters are also ordered from top to bottom.
The Bidirectional Algorithm is used when some characters are ordered from bottom to top. For example, this happens with a mixture of Arabic and Latin glyphs when all the glyphs are rotated uniformly 90° clockwise. The Unicode Standard does not specify whether text is presented horizontally or vertically, or whether text is rotated. That is left up to higher-level protocols.
Because of the implicit character types and the heuristics for resolving neutral and numeric directional behavior, the implicit bidirectional ordering will generally produce the correct display without any further work. However, problematic cases may occur when a right-to-left paragraph begins with left-to-right characters, or there are nested segments of different-direction text, or there are weak characters on directional boundaries. In these cases, embeddings or directional marks may be required to get the right display. Part numbers may also require directional overrides.
The most common problematic case is that of neutrals on the boundary of an embedded language. This can be addressed by setting the level of the embedded text correctly. For example, with all the text at level 0 the following occurs:
Memory: he said "I NEED WATER!", and expired. Display: he said "RETAW DEEN I!", and expired.
If the exclamation mark is to be part of the Arabic quotation, then the user can select the text I NEED WATER! and explicitly mark it as embedded Arabic, which produces the following result:
Memory: he said "<RLE>I NEED WATER!<PDF>", and expired. Display: he said "!RETAW DEEN I", and expired.
However, a simpler and better method of doing this is to place a right directional mark (RLM) after the exclamation mark. Because the exclamation mark is now not on a directional boundary, this produces the correct result.
Memory: he said "I NEED WATER!<RLM>", and expired. Display: he said "!RETAW DEEN I", and expired.
This latter approach is preferred because it does not make use of the stateful format codes, which can easily get out of sync if not fully supported by editors and other string manipulation. The stateful format codes are generally needed only for more complex (and rare) cases such as double embeddings, as in the following:
Memory: DID YOU SAY '<LRE>he said "I NEED WATER!<RLM>", and expired.<PDF>'? Display: ?'he said "!RETAW DEEN I", and expired.' YAS UOY DID
A common problem case is where the text really represents a sequence of items with separating punctuation marks, often programmatically concatenated. These separators are often strings of neutral characters. For example, a web page might have the following at the bottom:
advertising programs - business solutions - privacy policy - help - about
This might be built up on the server by concatenating a variable number of strings with " - " as a separator, for example. If all of the text is translated into Arabic or Hebrew and the overall page direction is set to be RTL, then the right result occurs, such as the following:
However, suppose that in the translation, there remain some LTR characters. This is not uncommon for company names, product names, technical terms, and so on. If one of the separators is bounded on both sides by LTR characters, then the result will be badly jumbled. For example, suppose that "programs" in the first term and "business" in the second were left in English. Then the result would be
TUOBA - PLEH - YCILOP YCAVIRP - SNOITULOS programs - business GNISITREVDA
The result is a jumble, with the apparent first term being "advertising business" and the second being "programs solutions". The simplest solution for this problem is to include an RLM character in each separator string. That will cause each separator to adopt a right-to-left direction, and produce the correct output:
TUOBA - PLEH - YCILOP YCAVIRP - SNOITULOS business - programs GNISITREVDA
The stateful controls (LRE, RLE, and PDF) can be used to achieve the same effect; web pages would use spans with the attributes dir="ltr" or dir="rtl". Each separate field would be embedded, excluding the separators. In general, LRM and RLM are preferred to the stateful approach because their effects are more local in scope, and are more robust than the dir attributes when text is copied. (Ideally programs would convert dir attributes to the corresponding stateful controls when converting to plain text, but that is not generally supported.)
In the Unicode Character Database for [Unicode3.0], new bidirectional character types were introduced to make the body of the Bidirectional Algorithm depend only on the types of characters, and not on the character values. The changes from the 2.0 bidirectional types are listed in Table 6.
|New Bidirectional Type
|All characters with General_Category Me, Mn
|All characters of type R in the Arabic ranges (0600..06FF, FB50..FDFF,
(Letters in the Thaana and Syriac ranges also have this value.)
|The explicit embedding characters: LRO, RLO, LRE, RLE, PDF
|LRO, RLO, LRE, RLE, PDF, respectively
|Formatting characters and controls (General_Category Cf and Cc) that were of bidirectional type ON
|Zero Width Space
Implementations that use older property tables can adjust to the modifications in the Bidirectional Algorithm by algorithmically remapping the characters in Table 6 to the new types.
For consistent appearance, when bidirectional text subject to a higher-level protocol is to be converted to Unicode plain text, formatting codes should be inserted to ensure that the display order resulting from the application of the Unicode Bidirectional Algorithm matches that specified by the higher-level protocol.. The same principle should be followed whenever text using a higher-level protocol is converted to marked-up text that is unaware of the higher-level protocol. For example, if a higher-level protocol sets the paragraph direction to 1 (R) based on the number of L versus R/AL characters, when converted to plain text the paragraph would be embedded in a bracketing pair of RLE..PDF formatting codes. If the same text were converted to HTML4.0 the attribute dir = "rtl" would be added to the paragraph element.
The mirrored property is important to ensure that the correct character codes are used for the desired semantic. This is of particular importance where the name of a character does not indicate the intended semantic, such as with U+0028 "(" LEFT PARENTHESIS. While the name indicates that it is a left parenthesis, the character really expresses an open parenthesis—the leading character in a parenthetical phrase, not the trailing one.
Some of the characters that do not have the Bidi_Mirrored property may be rendered with mirrored glyphs, according to a higher level protocol that adds mirroring: see Section 4.3, Higher-Level Protocols, especially HL6. Except in such cases, mirroring must be done according to rule L4, to ensure that the correct character code is used to express the intended semantic of the character, and to avoid interoperability and security problems.
Implementing rule L4 calls for mirrored glyphs. These glyphs may not be exact graphical mirror images. For example, clearly an italic parenthesis is not an exact mirror image of another— "(" is not the mirror image of ")". Instead, mirror glyphs are those acceptable as mirrors within the normal parameters of the font in which they are represented.
In implementation, sometimes pairs of characters are acceptable mirrors for one another—for example, U+0028 "(" LEFT PARENTHESIS and U+0029 ")" RIGHT PARENTHESIS or U+22E0 "⋠" DOES NOT PRECEDE OR EQUAL and U+22E1 "⋡" DOES NOT SUCCEED OR EQUAL. Other characters such as U+2231 "∱" CLOCKWISE INTEGRAL do not have corresponding characters that can be used for acceptable mirrors. The informative Bidi Mirroring data file [Data9], lists the paired characters with acceptable mirror glyphs. The formal property name for this data in the Unicode Character Database [UCD] is Bidi_Mirroring_Glyph. A comment in the file indicates where the pairs are "best fit": they should be acceptable in rendering, although ideally the mirrored glyphs may have somewhat different shapes.
Mark Davis is the author of the initial version and has added to and maintained the text of this annex.
Mark Davis created the initial version of this annex and maintains the text.
Thanks to the following people for their contributions to the Bidirectional Algorithm or for their feedback on earlier versions of this annex: Alaa Ghoneim (علاء غنيم), Ahmed Talaat (أحمد طلعت), Asmus Freytag, Avery Bishop, Behdad Esfahbod (بهداد اسفهبد), Doug Felt, Eric Mader, Ernest Cline, Gidi Shalom-Bendor (גידי שלום-בן דור), Isai Scheinberg, Israel Gidali (ישראל גידלי), Joe Becker, John McConnell, Jonathan Kew, Jonathan Rosenne (יונתן רוזן), Khaled Sherif (خالد شريف), Kamal Mansour (كمال منصور), Kenneth Whistler, Maha Hassan (مها حسن), Markus Scherer, Martin Dürst, Mati Allouche (מתתיהו אלוש), Michel Suignard, Mike Ksar (ميشيل قصار), Murray Sargent, Paul Nelson, Rick McGowan, Roozbeh Pournader (روزبه پورنادر), Steve Atkin, and Thomas Milo (تُومَاسْ مِيلُو).
For references for this annex, see Unicode Standard Annex #41, "Common References for Unicode Standard Annexes."
For details of the change history, see the online copy of this annex at http://www.unicode.org/reports/tr9/.
The following summarizes modifications from previous revisions of this annex.
Revision 24 being a proposed update, only changes between versions 23 and 25 are noted here.
Revision 22 being a proposed update, only changes between versions 21 and 23 are noted here.
Revision 20 being a proposed update, only changes between versions 19 and 21 are noted here.
Revision 18 being a proposed update, only changes between versions 19 and 17 are noted here.
Revision 16 being a proposed update, only changes between versions 17 and 15 are noted here.
Copyright © 2000-2012 Unicode, Inc. All Rights Reserved. The Unicode Consortium makes no expressed or implied warranty of any kind, and assumes no liability for errors or omissions. No liability is assumed for incidental and consequential damages in connection with or arising out of the use of the information or programs contained or accompanying this technical report. The Unicode Terms of Use apply.
Unicode and the Unicode logo are trademarks of Unicode, Inc., and are registered in some jurisdictions.